Add automatic TDD skill alongside retained manual package
This commit is contained in:
1 parent
063d12bfb3
commit
12dc0d5505
4 files changed
+43
-2
No files matched your search
@@ -22,7 +22,8 @@ Public source for RelayView-maintained instruction-only role skills and an illus
|
||||
| `packages/scaffold-exercises` | Optional guidance | Implementer / implementation | 0.3.0 |
|
||||
| `packages/shared-abstraction-refactor` | Optional guidance | Implementer / implementation | 0.3.0 |
|
||||
| `packages/split-large-files` | Optional guidance | Implementer / implementation | 0.3.0 |
|
||||
| `packages/tdd` | Optional guidance | Implementer / implementation | 0.3.0 |
|
||||
| `packages/tdd` | Optional manual guidance | Implementer / implementation | 0.3.0 |
|
||||
| `packages/tdd-auto` | Optional automatic guidance | Implementer / implementation | 0.3.1 |
|
||||
| `packages/writing-for-agents` | Optional guidance | Implementer / implementation | 0.3.0 |
|
||||
| `packages/code-review` | Optional guidance | Reviewer / review | 0.3.0 |
|
||||
| `packages/c4-diff` | Optional guidance | Reviewer / review | 0.3.0 |
|
||||
@@ -42,7 +43,7 @@ python -m tools.packages pack examples/starter-planner dist/starter-planner.zip
|
||||
|
||||
Replace `examples/starter-planner` in the last two commands with your package directory. The `pack` command writes a reproducible ZIP containing the package, `LICENSE`, and `NOTICE.md`, then prints its SHA-256. The check returns the owner's package identity digest. Both use only Python 3's standard library and this repository's source. Preserve the license and notice when redistributing the package or fork.
|
||||
|
||||
To import a user fork, place its closed package directory under the owner's configured trusted root, use Settings → Skills to import the relative `SKILL.md` path under a new unique ID, and assign it to the matching future role step. Saving a new assignment takes effect after owner restart; existing sessions retain their captured bytes. The Settings catalog displays source, version, digest, role, step, and pending versus effective assignment. The owner's admission remains authoritative even when these local checks pass.
|
||||
To import a user fork, place its closed package directory under the owner's configured trusted root, use Settings → Skills to import the relative `SKILL.md` path under a new unique ID, and assign it to the matching future role step. Saving a new assignment takes effect for future sessions immediately; existing sessions retain their captured bytes. The Settings catalog displays source, version, digest, role, step, and pending versus effective assignment. The owner's admission remains authoritative even when these local checks pass.
|
||||
|
||||
To use a maintained default, copy its release package under the same trusted root, admit its `SKILL.md` through the owner catalog, then select it for its declared role in Settings. Settings import accepts user-source packages; configure first-party packages in the owner catalog. Select a fork with `source.kind: user` and a distinct ID to replace that role's future assignment. Planner guidance uses existing read and planning tools; Implementer guidance uses existing implementation and reporting tools. Neither selection changes a role's tools, credentials, lifecycle stages, validation requirements, Gitea effects, review, merge, or Human acceptance. The owner keeps the existing Gitea task workflow.
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
name: tdd-auto
|
||||
description: Test-driven development for an assigned implementation Plan; use red, green, and focused verification at its agreed test seams.
|
||||
metadata:
|
||||
relayview-display-name: Test-driven development
|
||||
relayview-version: 0.3.1
|
||||
---
|
||||
|
||||
# Test-driven development
|
||||
|
||||
Use the test seams and behavior specified by the immutable Plan. Read the target repository's domain language and test conventions. If the Plan leaves a consequential seam unclear, report that gap to the owner; do not create a new acceptance boundary by silently choosing one.
|
||||
|
||||
At each seam, write one test that fails for the missing behavior and observe the failure. Implement the smallest production slice that makes it pass. Repeat for the next behavior, then run the focused checks required by the Plan. Assert observable behavior through public interfaces, using expected values independent of the implementation. Avoid private-method assertions, tautological expectations, and a batch of tests for behavior not yet explored. Record the red and green evidence in the implementation handoff.
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"source": {
|
||||
"kind": "first-party",
|
||||
"reference": "v0.3.1"
|
||||
},
|
||||
"role": "implementer",
|
||||
"step": "implementation",
|
||||
"files": [
|
||||
{
|
||||
"path": "SKILL.md",
|
||||
"sha256": "cf4f0cd039dc283caabc3238e3d084c2d59a3f8c8ba030595e9ea80e2b1338e6"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -12,6 +12,18 @@ ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
class PackageTests(unittest.TestCase):
|
||||
def test_tdd_is_available_to_owner_started_implementers(self):
|
||||
package = ROOT / "packages/tdd-auto"
|
||||
skill = (package / "SKILL.md").read_text()
|
||||
frontmatter = skill.split("---", 2)[1]
|
||||
self.assertIn("name: tdd-auto", frontmatter)
|
||||
self.assertNotIn("disable-model-invocation: true", frontmatter)
|
||||
self.assertIn("relayview-version: 0.3.1", frontmatter)
|
||||
manifest = json.loads((package / "relayview-skill.json").read_text())
|
||||
self.assertEqual(manifest["source"], {"kind": "first-party", "reference": "v0.3.1"})
|
||||
check_package(package)
|
||||
self.assertIn("disable-model-invocation: true", (ROOT / "packages/tdd/SKILL.md").read_text())
|
||||
|
||||
def test_migrated_role_guidance_has_one_declared_role_step(self):
|
||||
expected = {"codebase-design": ("planner", "planning"), "grill-me": ("planner", "planning"),
|
||||
"grilling": ("planner", "planning"), "to-questionnaire": ("planner", "planning"),
|
||||
|
||||
Reference in new issue
Block a user