5 Commits
Author SHA1 Message Date
adminandClaude Opus 5.5 a04e3ed244 Offer prototype commands only for the design question
Check instruction packages / check (push) Successful in 4s
A Designer met the reset-command condition by offering an optional real
update for contrast, then built and debugged a reset helper for it. The
method now gives the Human only the commands needed to answer the design
question, and asks for a reset command only when one of those changes the
scenario.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 19:41:00 -05:00
adminandClaude Opus 5.5 5fdb42a8aa Add a prototype reset command only when the scenario changes
Check instruction packages / check (push) Successful in 4s
A read-only command such as a dry-run leaves nothing to restore, yet naming a
reset command as the example helper led Designers to build one for every
prototype. The method and checklist now ask for a reset command only when a
command the Human will try changes the scenario.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 18:41:46 -05:00
adminandClaude Opus 5.5 87ebe1683e Have the prototype checklist cd to the command directory
Check instruction packages / check (push) Successful in 4s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 07:55:50 -05:00
adminandClaude Opus 5.5 a968e669c0 Add guidance-writing questions to the README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 07:52:45 -05:00
adminandClaude Opus 5.5 28c221cdd2 Guide Designer prototypes to hand over the user's own commands
The Human answers a prototype's design question by using it as the
software's user will, so the prototype method now has the Designer prepare
the scenario itself and give the Human the real command, syntax and
directory a user would use, with any reset command offered for that
purpose alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 22:54:14 -05:00
4 changed files with 37 additions and 5 deletions

No files matched your search

+12 -1
View File
@@ -9,7 +9,8 @@ Public source for RelayView-maintained instruction-only role skills and an illus
| `packages/planner-scope` | Maintained default | Planner / planning | 0.2.0 | | `packages/planner-scope` | Maintained default | Planner / planning | 0.2.0 |
| `packages/implementer-handoff` | Maintained default | Implementer / implementation | 0.2.0 | | `packages/implementer-handoff` | Maintained default | Implementer / implementation | 0.2.0 |
| `packages/issue-designer-default` | Maintained default | Designer / design | 0.6.1 | | `packages/issue-designer-default` | Maintained default | Designer / design | 0.6.1 |
| `packages/designer-wayfinder`, `designer-grilling`, `designer-prototype` | Optional manual guidance | Designer / design | 0.6.0 | | `packages/designer-wayfinder`, `designer-grilling` | Optional manual guidance | Designer / design | 0.6.0 |
| `packages/designer-prototype` | Optional manual guidance | Designer / design | 0.6.2 |
| `packages/designer-research`, `designer-domain-modeling`, `designer-triage` | Optional manual guidance | Designer / design | 0.6.0 | | `packages/designer-research`, `designer-domain-modeling`, `designer-triage` | Optional manual guidance | Designer / design | 0.6.0 |
| `packages/designer-to-spec`, `designer-to-tickets` | Optional manual guidance | Designer / design | 0.6.0 | | `packages/designer-to-spec`, `designer-to-tickets` | Optional manual guidance | Designer / design | 0.6.0 |
| `packages/codebase-design` | Optional guidance | Planner / planning | 0.3.0 | | `packages/codebase-design` | Optional guidance | Planner / planning | 0.3.0 |
@@ -70,6 +71,16 @@ To use a user fork, place its closed package directory under the owner's configu
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. 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.
## Write the guidance
A package's instructions are read by a model, so write them for one. Before adding an instruction, especially in response to behavior seen in a run, ask:
- Can RelayView's owner determine the result from facts it holds? Then the owner should produce it, and the guidance should use it.
- Does the text state the action to take and a check the agent can run on the result, rather than what to avoid?
- Does the environment the agent works in differ from the familiar one it expects? Name each difference and the action that handles it.
Judge a change over several runs, using the tool calls each run made, not one successful conversation. RelayView's `docs/authoritative/architecture-heuristics.md`, under "Model-Facing Work", records these defaults in full.
## Release identity ## Release identity
A release tag pins public source. CI runs package checks and archives from that source. RelayView's bundled copy records the source tag and commit plus each package identity and file hash, then verifies the bytes in its own focused test. A bundled update creates a new release identity; it does not overwrite a user fork. A release tag pins public source. CI runs package checks and archives from that source. RelayView's bundled copy records the source tag and commit plus each package identity and file hash, then verifies the bytes in its own focused test. A bundled update creates a new release identity; it does not overwrite a user fork.
+22 -1
View File
@@ -4,9 +4,30 @@ description: Plan a bounded throwaway prototype to answer a design question.
disable-model-invocation: true disable-model-invocation: true
metadata: metadata:
relayview-display-name: Designer prototype relayview-display-name: Designer prototype
relayview-version: 0.6.0 relayview-version: 0.6.2
--- ---
# Prototype # Prototype
Propose the exact question, bounded code or data scope, expected preview or data effects, and limits to the Human before entering this method. Use only owner-admitted prototype controls after agreement. Treat observations as evidence about the question, not production behavior. Record what was tried, observed, and still uncertain; keep throwaway changes out of the issue's implementation claim. Propose the exact question, bounded code or data scope, expected preview or data effects, and limits to the Human before entering this method. Use only owner-admitted prototype controls after agreement. Treat observations as evidence about the question, not production behavior. Record what was tried, observed, and still uncertain; keep throwaway changes out of the issue's implementation claim.
## Let the Human try it as a user
The Human answers the question by using the prototype the way the software's user will. The commands they type are part of the design under review: the command name, its arguments and options, and the directory it runs from.
- Prepare the scenario yourself before handing over. Create the sample data, repositories, and earlier history the question needs, and run any setup steps, so the scenario is ready when the Human arrives.
- Put the scenario's data where the app finds it by default, such as its default config or source directory under HOME, so the user's command needs no extra options.
- Make the Human's first command one the software's user will type: the real command name, the syntax this change proposes, and the arguments a user would pass, run from the directory where a user would be.
- Give each command to try exactly as that user types it, and say what it shows.
- Give the Human only the commands needed to answer the design question. Add a reset command only when one of those commands changes the scenario; then put it in `/scratch/bin` and give it by its name alone, followed by the command to try again.
- Ask the Human about what they saw as a user of the software, in terms of the design question.
## Before handing over
Work through this checklist, then give the Human the shell command and the first command to try:
1. The app's command runs by its own name from `/scratch/bin`: a configured command the owner listed, or a launcher you wrote. Run `cd` to the command directory, then the command with an unknown option, and confirm its usage message names the command as the user types it.
2. The scenario's data is where the app finds it by default under the workspace's HOME.
3. Helper commands are in `/scratch/bin`, so the Human runs each by its name.
4. The command directory is set with `configure` to where the app's user runs the app.
5. You ran the first command to try yourself, exactly as the Human will type it, from that directory, and it showed what the question is about.
@@ -2,14 +2,14 @@
"schemaVersion": 1, "schemaVersion": 1,
"source": { "source": {
"kind": "first-party", "kind": "first-party",
"reference": "v0.6.0" "reference": "v0.6.2"
}, },
"role": "designer", "role": "designer",
"step": "design", "step": "design",
"files": [ "files": [
{ {
"path": "SKILL.md", "path": "SKILL.md",
"sha256": "3898ccf2566614ac3fc54afadd857ebd1e61701d0fe1344b92f79f6b01278706" "sha256": "b72f085f33c10ea48f69fbe55c4f364f6a873a8ae2e6baeb8eaf2aaf71df5045"
} }
] ]
} }
+1 -1
View File
@@ -25,7 +25,7 @@ class PackageTests(unittest.TestCase):
skill = (package / "SKILL.md").read_text() skill = (package / "SKILL.md").read_text()
frontmatter = skill.split("---", 2)[1] frontmatter = skill.split("---", 2)[1]
self.assertEqual("disable-model-invocation: true" in frontmatter, name in manual) self.assertEqual("disable-model-invocation: true" in frontmatter, name in manual)
version = "0.6.1" if name == automatic else "0.6.0" version = {automatic: "0.6.1", "designer-prototype": "0.6.2"}.get(name, "0.6.0")
self.assertIn(f"relayview-version: {version}", frontmatter) self.assertIn(f"relayview-version: {version}", frontmatter)
manifest = json.loads((package / "relayview-skill.json").read_text()) manifest = json.loads((package / "relayview-skill.json").read_text())
self.assertEqual(manifest["source"], {"kind": "first-party", "reference": f"v{version}"}) self.assertEqual(manifest["source"], {"kind": "first-party", "reference": f"v{version}"})