chore(config): add PRD.md and .claude/ project config to repository
- PRD.md: Product Requirements Document (single source of truth for all requirements) - .claude/settings.local.json: Claude Code agent permission config - .claude/commands/: project-specific slash commands - .claude/skills/: project-specific skill definitions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
160
.claude/commands/openspec-project-status.md
Normal file
160
.claude/commands/openspec-project-status.md
Normal file
@@ -0,0 +1,160 @@
|
||||
---
|
||||
name: "OpenSpec Project Status"
|
||||
description: Show a human-readable summary of all OpenSpec changes — active, archived, artifact completion, and task progress
|
||||
category: Workflow
|
||||
tags: [workflow, status, openspec, reporting]
|
||||
---
|
||||
|
||||
Show the full OpenSpec project status in a clear, human-readable format. No raw JSON — just a clean picture of where the project stands.
|
||||
|
||||
**Input**: No arguments required. Run `/openspec-project-status` at any time.
|
||||
|
||||
---
|
||||
|
||||
**Steps**
|
||||
|
||||
1. **Get all changes**
|
||||
|
||||
Run:
|
||||
```bash
|
||||
openspec list --json
|
||||
```
|
||||
|
||||
Separate results into:
|
||||
- **Active changes** (not in `archive/`)
|
||||
- **Archived changes** (in `archive/`)
|
||||
|
||||
If the command fails or no changes exist, display a friendly empty state (see Output section).
|
||||
|
||||
2. **For each active change, gather full status**
|
||||
|
||||
Run in parallel for all active changes:
|
||||
```bash
|
||||
openspec status --change "<name>" --json
|
||||
```
|
||||
|
||||
Also read each change's `tasks.md` to extract:
|
||||
- Total task count
|
||||
- Completed tasks (`- [x]`)
|
||||
- Pending tasks (`- [ ]`)
|
||||
- Text of the **next pending task** (first `- [ ]` item)
|
||||
|
||||
Also check for delta specs at `openspec/changes/<name>/specs/` — note if present.
|
||||
|
||||
3. **For archived changes**
|
||||
|
||||
List them by archive date (newest first). No need to read full status — just show name and archive date from the folder name (`YYYY-MM-DD-<name>`).
|
||||
|
||||
4. **Render the human-readable status report**
|
||||
|
||||
Use the output format defined below.
|
||||
|
||||
---
|
||||
|
||||
**Output Format**
|
||||
|
||||
```
|
||||
## OpenSpec Project Status
|
||||
|
||||
### Active Changes (<count>)
|
||||
|
||||
────────────────────────────────────────
|
||||
<change-name>
|
||||
────────────────────────────────────────
|
||||
Schema: <schema-name>
|
||||
Phase: <inferred from artifact state: Proposing | Designing | Ready to Implement | In Progress | Complete>
|
||||
|
||||
Artifacts
|
||||
✓ proposal done
|
||||
✓ design done
|
||||
◌ tasks pending
|
||||
|
||||
Tasks <done>/<total> complete
|
||||
████████░░░░░░░░ 50%
|
||||
Next: "<text of next pending task>"
|
||||
|
||||
Delta Specs <present / none>
|
||||
|
||||
────────────────────────────────────────
|
||||
|
||||
<Repeat for each active change>
|
||||
|
||||
---
|
||||
|
||||
### Archived Changes (<count>)
|
||||
|
||||
2026-03-20 add-initial-auth
|
||||
2026-03-15 setup-ci-pipeline
|
||||
2026-03-10 scaffold-project
|
||||
|
||||
---
|
||||
|
||||
### Summary
|
||||
|
||||
Active changes: <N>
|
||||
Ready to apply: <N> (all artifacts done, tasks pending)
|
||||
In progress: <N> (tasks partially complete)
|
||||
Complete: <N> (all tasks done, not yet archived)
|
||||
Archived: <N>
|
||||
```
|
||||
|
||||
**Phase inference rules** (from artifact + task state):
|
||||
- `Proposing` — proposal artifact is not done
|
||||
- `Designing` — proposal done, design not done
|
||||
- `Speccing` — design done, tasks artifact not done
|
||||
- `Ready to Implement` — all artifacts done, 0 tasks complete
|
||||
- `In Progress` — all artifacts done, some tasks complete but not all
|
||||
- `Complete` — all artifacts done, all tasks complete (not yet archived)
|
||||
|
||||
**Progress bar rules:**
|
||||
- 16 chars wide: `█` per completed segment, `░` for remaining
|
||||
- Show percentage after bar
|
||||
- If 0 tasks: show `No tasks yet`
|
||||
- If all tasks done: show `████████████████ 100% All done!`
|
||||
|
||||
---
|
||||
|
||||
**Output: No active changes**
|
||||
|
||||
```
|
||||
## OpenSpec Project Status
|
||||
|
||||
### Active Changes (0)
|
||||
|
||||
No active changes. Start one with /opsx:propose
|
||||
|
||||
---
|
||||
|
||||
### Archived Changes (<count>)
|
||||
|
||||
2026-03-20 add-initial-auth
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
### Summary
|
||||
|
||||
Active changes: 0
|
||||
Archived: <N>
|
||||
```
|
||||
|
||||
**Output: OpenSpec CLI unavailable**
|
||||
|
||||
```
|
||||
## OpenSpec Project Status
|
||||
|
||||
OpenSpec CLI not available. Cannot read change data.
|
||||
|
||||
Make sure `openspec` is installed and accessible in your PATH.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Guardrails**
|
||||
|
||||
- Never show raw JSON — always translate to human-readable output
|
||||
- Never guess artifact or task state — always read from actual files and CLI output
|
||||
- If a `tasks.md` file does not exist for a change, show `No tasks file` instead of 0/0
|
||||
- Archived changes are display-only — never modify them
|
||||
- Phase labels must be inferred strictly from actual artifact + task state, not assumed
|
||||
- If `openspec status` fails for a specific change, show that change with `Status unavailable` and continue
|
||||
Reference in New Issue
Block a user