Clarify Designer assignment and lock release modes
This commit is contained in:
1 parent
e472e1bd55
commit
aac3dd3680
2 files changed
+20
-2
No files matched your search
@@ -66,9 +66,9 @@ 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 use a user fork, place its closed package directory under the owner's configured trusted root and use Settings → Skills to import the relative `SKILL.md` path under a new unique ID. Import validates and records the package; it does not assign it. Add that ID to a role-compatible named set in the owner configuration and restart the owner to load the set. Then select the set for the matching role in Settings → Skills and save. That selection 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 user fork, place its closed package directory under the owner's configured trusted root and use Settings → Skills to import the relative `SKILL.md` path under a new unique ID. Import validates and records the package; it does not assign it. For Planner, Implementer, or Reviewer guidance, add that ID to a role-compatible named set in the owner configuration and restart the owner to load the set. Then select the set for the matching role in Settings → Skills and save. For an optional Designer method, list its admitted ID in `workflowPresets.designerSkills` and reload the owner configuration; Designer has no Settings set selector. These assignments affect future sessions; 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.
|
||||
To use a maintained Planner or Implementer 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 a Planner or Implementer future assignment. RelayView pins and assigns the Issue Designer default automatically; its optional methods use `workflowPresets.designerSkills`. Planner guidance uses existing read and planning tools; Implementer guidance uses existing implementation and reporting tools. Guidance selection does not change a role's tools, credentials, lifecycle stages, validation requirements, Gitea effects, review, merge, or Human acceptance. The owner keeps the existing Gitea task workflow.
|
||||
|
||||
## Release identity
|
||||
|
||||
|
||||
@@ -12,6 +12,24 @@ ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
class PackageTests(unittest.TestCase):
|
||||
def test_designer_release_modes_and_source(self):
|
||||
automatic = "issue-designer-default"
|
||||
manual = (
|
||||
"designer-wayfinder", "designer-grilling", "designer-prototype",
|
||||
"designer-research", "designer-domain-modeling", "designer-triage",
|
||||
"designer-to-spec", "designer-to-tickets",
|
||||
)
|
||||
for name in (automatic, *manual):
|
||||
with self.subTest(name=name):
|
||||
package = ROOT / "packages" / name
|
||||
skill = (package / "SKILL.md").read_text()
|
||||
frontmatter = skill.split("---", 2)[1]
|
||||
self.assertEqual("disable-model-invocation: true" in frontmatter, name in manual)
|
||||
self.assertIn("relayview-version: 0.6.0", frontmatter)
|
||||
manifest = json.loads((package / "relayview-skill.json").read_text())
|
||||
self.assertEqual(manifest["source"], {"kind": "first-party", "reference": "v0.6.0"})
|
||||
check_package(package)
|
||||
|
||||
def test_tdd_is_available_to_owner_started_implementers(self):
|
||||
package = ROOT / "packages/tdd-auto"
|
||||
skill = (package / "SKILL.md").read_text()
|
||||
|
||||
Reference in new issue
Block a user