feat: add pstack-style rigor skill family for Zed

- wursor-precheck: router skill, entry point for non-trivial tasks
- wursor-principles: 21 engineering principles adapted for Wursor
- wursor-tdd, wursor-bug-fix, wursor-feature, wursor-investigation,
  wursor-review, wursor-decision-log: playbook skills
- AGENTS.md: repo guide wiring the skill routing table
- Fix: double-quote YAML frontmatter descriptions (colon-space in
  plain scalars broke Zed's skill loader)
This commit is contained in:
SinachPat
2026-08-14 14:23:06 +01:00
parent dfb3c9372b
commit 0dae13cfd3
9 changed files with 591 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
---
name: wursor-feature
description: "Build new or changed behavior in the Wursor repo, from a named data shape, TDD-first, with a defined verification path. Includes a refactoring mode for behavior-preserving structural change. Adapted from pstack's feature playbook."
---
# Wursor Feature
Build a new feature, or change behavior, with the rigor of a named data shape, a failing test first, and a defined verification path.
## When to use
Use this skill when:
- The task is "add X", "build Y", "change Z"
- A user story describes new behavior
- A refactoring preserves behavior while changing structure
Do **not** use this for: one-line changes, copy edits, or bugs (use `wursor-bug-fix`).
## Playbook
### Step 1 — Name the data shape
Before any code, define what the feature operates on. The core types, in concrete form:
- What is the input? (request, event, message)
- What is the output? (response, deployed state, preview URL)
- What states does it pass through? (enumerate them)
- What can go wrong? (enumerate the errors)
Write these as types or interfaces where the language supports it. For `api/` this usually means a TypeScript type or a Zod schema at the boundary. For `plugin/` a class or array-shaped response.
### Step 2 — Write the failing test
Following `wursor-tdd`:
- One test per behavior, one assertion per test
- The test must fail before implementation
- Mocks at boundaries: Grok API, plugin API, Docker, filesystem
### Step 3 — Implement
Write the minimum code to pass the test(s). Follow the principles:
- Foundational thinking — the types from step 1 drive the implementation
- Make operations idempotent — the feature must be retry-safe
- Boundary discipline — parse and validate external input at the boundary
### Step 4 — Verify
- The new tests pass
- The broader suite passes (`pnpm test:api`, `pnpm test:web`, or `phpunit` as appropriate)
- For UI features: the component renders in the browser/E2E test, not just "compiles"
### Step 5 — Report
```
## What changed
- new module [x.ts] — does the specific thing, shaped by type T
## Data shape
- input: ..., output: ..., states: [...], errors: [...]
## Verification
- [feature.test.ts] — 4 tests, all pass
- full suite — green
## Follow-ups
- schema migration needed in [y.ts] when playbook runner lands
```