source-product-specs-from-code
Skill45 starsChanged 4 days agoMITView on GitHub
Synchronize PRD with implemented codebase changes. Usage /groundwork:source-product-specs-from-code
In this repository43 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- build-unplannedSkill
- check-specs-alignmentSkill
- create-tasksSkill
- debugSkill
- design-architectureSkill
- design-it-twiceSkill
- design-productSkill
- domain-modelingSkill
- doubt-driven-developmentSkill
- finalize-taskSkill
- groundwork-checkSkill
- groundwork-helpSkill
- handoffSkill
- implement-taskSkill
- instrument-observabilitySkill
- just-do-itSkill
- just-do-it-swarmingSkill
- plan-taskSkill
- review-prSkill
- select-projectSkill
- setup-repoSkill
- shipSkill
- skillsSkill
- source-architecture-from-codeSkill
- source-ux-design-from-codeSkill
- split-architectureSkill
- split-specsSkill
- staged-rolloutSkill
- statuslineSkill
- swarm-debugSkill
- swarm-design-architectureSkill
- task-validation-loopSkill
- test-driven-developmentSkill
- understanding-feature-requestsSkill
- use-git-worktreeSkill
- using-groundworkSkill
- ux-designSkill
- validateSkill
- vertical-sliceSkill
- work-on-next-taskSkill
- work-onSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
27 rules. About 0 are common, 16 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈16
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 18
If effort is low or medium (i.e.
- Distinctive: line 19
If you are not Sonnet or Opus, you MUST show the recommendation prompt - regardless of effort level.
- Distinctive: line 37
If the user selects "Cancel — I'll switch first": output the switching commands above and stop.
- Very specific: line 44
If yes → Is {{project_name}} non-empty?
- Very specific: line 45
If empty → Invoke Skill(skill="groundwork:select-project") to select a project, then restart this skill.
- Very specific: line 46
If set → Project is {{project_name}}, specs at {{specs_dir}}/.
- Distinctive: line 47
If no → Continue (single-project repo).
- Distinctive: line 50
If CWD is the repo root → fine, proceed.
- Very specific: line 51
Check which project's path CWD falls inside (compare against all projects in .groundwork.yml).
- Distinctive: line 52
If CWD is inside the selected project's path → fine, proceed.
- Very specific: line 53
If CWD is inside a different project's path → warn via AskUserQuestion:
- Very specific: line 57
If the user switches, invoke Skill(skill="groundwork:select-project").
- Distinctive: line 58
If CWD doesn't match any project → proceed without warning (shared directory).
- Distinctive: line 68
Detection: Check for single file first (takes precedence), then directory.
- Distinctive: line 83
Apply Changes: - Update document with user approval
- Distinctive: line 177
Detect spec format: - Check if PRD is single file or directory
- Distinctive: line 189
Update "Last updated" timestamp
- Distinctive: line 190
Update "Doc status" if appropriate
- Distinctive: line 194
Never reuse deleted requirement IDs (maintain traceability)
- Distinctive: line 201
After applying changes to the single-file PRD, check whether it should be split:
- Distinctive: line 206
If lines >= 500 OR features >= 15:
- Very specific: line 208
After the split completes, include in the session summary: "The PRD was automatically split into directory format at …
- Distinctive: line 210
If neither threshold is crossed, continue silently.
- Distinctive: line 214
All requirements must follow EARS syntax:
- Very specific: line 275
When both /groundwork:source-product-specs-from-code and /groundwork:source-architecture-from-code run:
- Very specific: line 276
Run /groundwork:source-product-specs-from-code first (product drives architecture)
- Very specific: line 278
Run /groundwork:source-architecture-from-code with awareness of PRD changes
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Sync Product Specs Skill
Keeps {{specs_dir}}/product_specs.md synchronized with product decisions made during sessions.
Pre-flight: Model Recommendation
Your current effort level is {{effort_level}}.
Skip this step silently if effort is high, xhigh, or max (the scale is low < medium < high < xhigh < max, so xhigh and max are already above high) AND you are Sonnet or Opus.
If effort is low or medium (i.e. below high), you MUST show the recommendation prompt — regardless of model.
If you are not Sonnet or Opus, you MUST show the recommendation prompt - regardless of effort level.
Otherwise → use AskUserQuestion:
{
"questions": [{
"question": "Do you want to switch? Session change detection and EARS requirement update quality benefits from consistent reasoning.\n\nTo switch: cancel, run `/effort high` (and `/model sonnet` if on Haiku), then re-invoke this skill.",
"header": "Recommended: Sonnet or Opus at high effort",
"options": [
{ "label": "Continue" },
{ "label": "Cancel — I'll switch first" }
],
"multiSelect": false
}]
}If the user selects "Cancel — I'll switch first": output the switching commands above and stop. Do not proceed with the skill.
Step 0: Resolve Project Context
Before loading specs, ensure project context is resolved:
- Monorepo check: Does
.groundwork.ymlexist at the repo root?- If yes → Is
{{project_name}}non-empty?- If empty → Invoke
Skill(skill="groundwork:select-project")to select a project, then restart this skill. - If set → Project is
{{project_name}}, specs at{{specs_dir}}/.
- If empty → Invoke
- If no → Continue (single-project repo).
- If yes → Is
- CWD mismatch check (monorepo only):
- Skip if not in monorepo mode or if the project was just selected in item 1 above.
- If CWD is the repo root → fine, proceed.
- Check which project's path CWD falls inside (compare against all projects in
.groundwork.yml). - If CWD is inside the selected project's path → fine, proceed.
- If CWD is inside a different project's path → warn via
AskUserQuestion:"You're working from
<cwd>(inside [cwd-project]), but the selected Groundwork project is [selected-project] ([selected-project-path]/). What would you like to do?"- "Switch to [cwd-project]"
- "Stay with [selected-project]"
If the user switches, invoke
Skill(skill="groundwork:select-project").
- If CWD doesn't match any project → proceed without warning (shared directory).
- Proceed with the resolved project context. All
{{specs_dir}}/paths will resolve to the correct location.
File Locations
- Target: Product specs (may be single file or directory)
- Single file:
{{specs_dir}}/product_specs.md - Directory:
{{specs_dir}}/product_specs/(content split across files)
- Single file:
- Context: Current session history
Detection: Check for single file first (takes precedence), then directory.
When to Trigger
This skill should activate when:
- User explicitly invokes
/groundwork:source-product-specs-from-code - Session involved product decisions (new features, requirement changes)
- User feedback changed scope or priorities
- New edge cases or requirements were discovered
Workflow Overview
- Analyze Session - Review product-relevant discussions
- Detect Changes - Identify PRD implications
- Propose Updates - Draft EARS requirements or modifications
- Apply Changes - Update document with user approval
Step 1: Analyze Session
Review the current session for:
New Requirements:
- "We also need to handle X"
- "What if the user does Y?"
- "Add support for Z"
Requirement Changes:
- "Actually, that should be 5 attempts, not 3"
- "Let's make that optional"
- "Remove the email notification"
Scope Changes:
- "Let's defer that to v2"
- "That's out of scope"
- "We need to add this for launch"
New Edge Cases:
- Error conditions discovered during implementation
- User feedback revealing gaps
- Integration constraints
Step 2: Detect Change Categories
| Category | Signal | Single file section | Directory mode file |
| New feature | Discussion of new capability | §3 Feature List (new subsection) | 03-features/<feature-code>.md (new file) |
| New requirement | "System should..." statements | §3.X EARS Requirements | 03-features/<feature-code>.md (existing file) |
| Requirement change | Modifying existing behavior | §3.X EARS Requirements (edit) | 03-features/<feature-code>.md (edit) |
| NFR change | Performance, security, scale discussion | §2 Non-functional | 02-non-functional.md |
| Scope change | "Out of scope" or "must have for launch" | §3.X In/Out of scope | 03-features/<feature-code>.md (edit) |
| Open question | Unresolved product decision | §5 Open Questions | 05-open-questions.md |
| Question resolved | Answer to existing OQ | §5 Open Questions (remove) | 05-open-questions.md (remove) |
Step 3: Propose Updates
For each detected change, propose a specific update:
## Proposed PRD Updates
### 1. New Requirement
**Trigger:** You discussed that artists should be warned before their quota expires.
**Proposed addition to §3.3 Monetization:**
- `PRD-MON-REQ-005` When artist quota falls below 10% remaining then the system shall send a warning notification via email.
---
### 2. Requirement Modification
**Trigger:** Changed impersonation lockout from N to 5 attempts.
**Current:**
- `PRD-IMP-REQ-008` When impersonation attempts exceed N per day by same user then the system shall lock account pending admin review.
**Proposed:**
- `PRD-IMP-REQ-008` When impersonation attempts exceed 5 per day by same user then the system shall lock account pending admin review.
---
### 3. New Open Question
**Trigger:** Unresolved discussion about handling rate limits.
**Proposed addition to §5:**
- `OQ-008` How should the system handle rate-limited users - queue requests or reject immediately?
---
### 4. Scope Change
**Trigger:** Multi-artist collaborative models deferred to v2.
**Proposed update to §3.1 Out of scope:**
Add: "Multi-artist collaborative models (deferred to v2)"
---
Approve these updates? (yes/no/modify)Step 4: Apply Changes
On approval:
- Detect spec format - Check if PRD is single file or directory
- Read current content:
- Single file: Read
{{specs_dir}}/product_specs.md - Directory: Aggregate all
.mdfiles from{{specs_dir}}/product_specs/
- Single file: Read
- Route updates to appropriate files:
- Single file mode: Edit
{{specs_dir}}/product_specs.mddirectly - Directory mode: Route each update:
- Features with ID (e.g., PRD-AUTH-*) → Find or create in
{{specs_dir}}/product_specs/03-features/<feature-code>.md - Open questions →
{{specs_dir}}/product_specs/05-open-questions.md - NFR changes →
{{specs_dir}}/product_specs/02-non-functional.md - Updates to existing content → Find the file containing that content
- Features with ID (e.g., PRD-AUTH-*) → Find or create in
- Single file mode: Edit
- Maintain requirement ID sequence (find highest PRD-XXX-REQ-NNN, increment)
- Update "Last updated" timestamp
- Update "Doc status" if appropriate
Important:
- New requirements get the next available ID in their feature's sequence
- Never reuse deleted requirement IDs (maintain traceability)
- Preserve EARS format for all requirements
Step 4a: Auto-Split Check (single file mode only)
Skip this step if the PRD is already in directory mode.
After applying changes to the single-file PRD, check whether it should be split:
- Count lines:
wc -l {{specs_dir}}/product_specs.md - Count features: number of
### \d+\.\d+headings in the file
If lines >= 500 OR features >= 15:
- Invoke
Skill(skill="groundwork:split-specs")— this runs automatically with no user input needed. - After the split completes, include in the session summary: "The PRD was automatically split into directory format at
{{specs_dir}}/product_specs/."
If neither threshold is crossed, continue silently.
EARS Format Reminder
All requirements must follow EARS syntax:
| Pattern | Template |
| Event-Driven | When <trigger> then the system shall <response> |
| State-Driven | While <state> the system shall <behavior> |
| Unwanted | If <condition> then the system shall <mitigation> |
| Optional | Where <feature enabled> the system shall <behavior> |
Change Detection Heuristics
Strong signals (likely PRD change):
- User explicitly states a requirement
- Edge case discovered that needs handling
- User feedback contradicting current spec
- "Must have for launch" statements
- Explicit scope decisions
Weak signals (maybe PRD change):
- Implementation difficulties (might be architecture, not requirements)
- Performance optimizations (might be NFR or architecture)
- UI/UX discussions (might be design, not requirements)
Focus on strong signals. For weak signals, ask: "Should this be captured as a product requirement, or is it an implementation/design detail?"
Session Summary Format
At session end, provide summary:
## PRD Sync Summary
**Session Date:** [date]
### Changes Detected:
1. [Change 1] → New requirement PRD-XXX-REQ-NNN
2. [Change 2] → Modified PRD-YYY-REQ-NNN
3. [Change 3] → Added open question OQ-NNN
4. [Change 4] → No PRD impact (implementation detail)
### PRD Document:
- [X] Updated with approved changes
- [ ] No changes needed
- [ ] Changes pending user review
### Requirement IDs Added/Modified:
- PRD-XXX-REQ-NNN (new)
- PRD-YYY-REQ-NNN (modified)
### Open Items:
- [Any unresolved product questions from session]Interaction with Other Skills
This skill works in concert with:
/groundwork:design-product- For deliberate, interactive requirement creation/groundwork:source-architecture-from-code- PRD changes may trigger architecture updates
When both /groundwork:source-product-specs-from-code and /groundwork:source-architecture-from-code run:
- Run
/groundwork:source-product-specs-from-codefirst (product drives architecture) - Note any new requirements that may need architectural support
- Run
/groundwork:source-architecture-from-codewith awareness of PRD changes
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

