-
Notifications
You must be signed in to change notification settings - Fork 0
ADR-321: Implement instance mode in spec-first-draft and /spec forwarding #74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feature/ADR-316-harvest
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,11 +4,18 @@ user-invocable: false | |
| description: > | ||
| Use when writing a first draft of a complete new spec or a new part of an existing spec. | ||
| Gathers context from docs, source code, and the user, then writes the draft to a _spec_*.md file. | ||
| argument-hint: <feature brief | work-item-id | spec-file-path> | ||
| In instance mode (a playbook reference supplied), drafts a thin instance spec from that | ||
| playbook's spec-template.md instead of the default template. | ||
| argument-hint: <feature brief | work-item-id | spec-file-path> [playbook reference] | ||
| --- | ||
|
|
||
| Use this skill when: | ||
| - You are writing a first draft of a complete new spec or a new part of an existing spec | ||
| - A playbook reference (a path or bare name) was supplied — draft a thin instance spec from that | ||
| playbook's `spec-template.md` instead of the default template (instance mode) | ||
|
|
||
| Use the `playbook-contract` skill for: the playbook directory contract and bare-name playbook | ||
| resolution order. This skill cites those definitions — it does not restate them. | ||
|
|
||
| ## Steps | ||
|
|
||
|
|
@@ -38,6 +45,15 @@ Determine the spec file location: the `_spec_*.md` lives next to the code it des | |
|
|
||
| Name: `_spec_<FeatureName>.md` in PascalCase. | ||
|
|
||
| **Instance mode.** If a playbook reference (a path or a bare name) was supplied when this skill | ||
|
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Non-blocking, flagged for confirmation rather than a defect: the spec's "Explicit trigger, explicit naming" Key Design Decision text says the playbook's step list also feeds the drafted spec's own |
||
| was invoked, resolve it per `playbook-contract`'s bare-name resolution order (cite, don't | ||
| restate). Once resolved, read the playbook directory's `spec-template.md` and use its own | ||
| sections as the draft's body in place of the default `## Overview` through `## Related Docs` | ||
| sections below. Keep the header block's `> **Status:**` and `> **Design doc:**` lines unchanged, | ||
| and add one more line — `> **Playbook:** <name or path>` — stamping the resolved playbook | ||
| reference into the header. If no playbook reference was supplied, use the default structure | ||
| below unchanged — instance mode is additive, never the default path. | ||
|
|
||
| Write the file using this structure: | ||
|
|
||
| --- | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor correctness/fault-tolerance note (non-blocking): stripping a
using <playbook-reference>that can appear "trailing or embedded" anywhere in$ARGUMENTSrisks silently mangling a legitimate feature brief that happens to contain the ordinary English word "using" (e.g. "notification service using webhooks for delivery") — there'd be no error, just a quietly wrong brief and a spurious playbook-resolution attempt. This matches the spec's own literal/spec ... using <playbook>wording, so it's not a defect introduced here, but consider tightening the guidance to prefer a trailing match and/or require the following token look like a bare skill name or path (no spaces) before stripping, to reduce false positives from conversational free text.