ystack 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0 — 2026-04-09
4
+
5
+ **Breaking:** Replaces Beads with git-native progress files. No migration path from 0.1.0 — run `npx ystack init` to set up the new `.ystack/` directory.
6
+
7
+ ### Breaking Changes
8
+
9
+ - `ystack.config.json` moved to `.ystack/config.json`
10
+ - `.beads/` directory no longer used — progress tracked in `.ystack/progress/*.md`
11
+ - `"epic"` field removed from module registry entries
12
+ - `.context/<bead-id>/` renamed to `.context/<feature-slug>/`
13
+ - `bd` CLI no longer required
14
+
15
+ ### Added
16
+
17
+ - **`/quick` skill** — fast path for bug fixes, chores, and small changes (skips planning and progress)
18
+ - **`progress-before-ship` hook** — warns on PR if code changed but progress not updated
19
+ - **`docs-match-progress` hook** — catches `[x]` items with stubbed doc sections
20
+ - **`no-undocumented-check` hook** — warns when checking a box with stub docs still present
21
+ - **`/pr` runs `/docs` inline** when it detects stubbed doc sections for completed features
22
+
23
+ ### Changed
24
+
25
+ - Progress tracked via markdown checklists in `.ystack/progress/<module>.md` instead of Beads
26
+ - `workflow-nudge` hook now recognizes `/quick` mode and stays silent
27
+ - `progress-before-ship` hook skips warning for small diffs (5 or fewer code files)
28
+ - `session-start` hook reads `.ystack/progress/` instead of `bd ready`
29
+
30
+ ### Removed
31
+
32
+ - Beads (`bd` CLI) dependency
33
+ - `PLAN.md` project roadmap (content lives in individual skill files)
34
+ - Beads installation flow from `ystack init` and `ystack create`
35
+
36
+ ---
37
+
3
38
  ## 0.1.0 — 2026-04-09
4
39
 
5
40
  First public release. Claude Code only.
@@ -8,7 +43,7 @@ First public release. Claude Code only.
8
43
 
9
44
  - **CLI** — `ystack create`, `init`, `update`, `remove` commands with interactive prompts (@clack/prompts)
10
45
  - **Skills** — `/build`, `/go`, `/review`, `/docs`, `/pr`, `/import`, `/scaffold`, `/address-review`
11
- - **Hooks** — context-monitor (tracks context usage), workflow-nudge (suggests `/build` when editing without a plan), session-start (shows ready front)
46
+ - **Hooks** — context-monitor, workflow-nudge, session-start
12
47
  - **Module registry** — `ystack.config.json` maps code scopes to doc pages and Beads epics
13
48
  - **Beads integration** — persistent task memory with epics, features, ready front, structured notes
14
49
  - **Docs support** — Nextra 4 and Fumadocs, framework-agnostic doc layer
package/LINTING.md CHANGED
@@ -1,8 +1,5 @@
1
1
  # Agent Linting
2
2
 
3
- > **Status: Design Spec — Not Yet Implemented**
4
- > None of the agent lint rules, hook infrastructure (`hooks/agent-lint.js`), or per-skill `rules/*.json` files described below are built. This document is a design specification for a future version of ystack. v0.1 includes basic Claude Code hooks (context monitoring, file-count nudge) but not the structured rule system described here.
5
-
6
3
  ## Two Types of Linting
7
4
 
8
5
  **Code linting** checks what the code looks like — formatting, syntax, style. Tools like Ultracite/Biome handle this. You configure it once and it covers all code. Adding a new feature doesn't mean adding new rules.
@@ -28,44 +25,61 @@ Rules come in two severities:
28
25
  - **Warn** — surface a message, let the agent continue. For nudges and best practices.
29
26
  - **Block** — prevent the action. For hard constraints that protect quality.
30
27
 
31
- ## Core Rules
28
+ ---
29
+
30
+ ## Built Hooks
31
+
32
+ These are implemented and installed by `npx ystack init`.
33
+
34
+ ### Workflow Hooks
35
+
36
+ | Hook | File | Trigger | What it does |
37
+ |------|------|---------|-------------|
38
+ | **workflow-nudge** | `workflow-nudge.js` | PreToolUse on Edit/Write | After 3+ source files edited without an active `.context/<feature-slug>/PLAN.md`, warns: "Consider /build for tracked changes." Dismissible via `.context/.no-nudge`. |
39
+ | **context-monitor** | `context-monitor.js` | PostToolUse on * | Warns at 60% context usage (suggest subagents) and 80% (suggest finishing current task). Silent if runtime doesn't expose context metrics. |
40
+ | **session-start** | `session-start.sh` | Session start | Shows unchecked features from `.ystack/progress/` and any in-progress plans in `.context/`. |
41
+
42
+ ### Progress Integrity Hooks
43
+
44
+ | Hook | File | Trigger | What it does |
45
+ |------|------|---------|-------------|
46
+ | **progress-before-ship** | `progress-before-ship.js` | PreToolUse on Bash (git push / gh pr create) | Warns if the branch has code changes but no `.ystack/progress/` updates. Catches `/go` forgetting to check the box. |
47
+ | **docs-match-progress** | `docs-match-progress.js` | PostToolUse on Edit/Write (doc files) | After editing a doc file, checks that `[x]` items in the module's progress file don't still have `<!-- ystack:stub -->` in docs. Catches incomplete doc updates. |
48
+ | **no-undocumented-check** | `no-undocumented-check.js` | PreToolUse on Edit (progress files) | When checking a box `[x]` in a progress file, warns if the linked doc section still has `<!-- ystack:stub -->`. Reminds you to run `/docs` before `/pr`. |
32
49
 
33
- These ship with ystack out of the box.
50
+ ---
34
51
 
35
- ### Workflow Rules
52
+ ## Design Spec — Not Yet Implemented
53
+
54
+ The rules below are enforced by the skill prompts themselves (the SKILL.md instructions tell the agent what to check). They are not separate hook implementations. A future version of ystack may extract these into standalone hooks for harder enforcement.
55
+
56
+ ### Workflow Rules (prompt-enforced)
36
57
 
37
58
  | Rule | Severity | When | What it checks |
38
59
  |------|----------|------|---------------|
39
- | `plan-before-edit` | Warn | PreToolUse on Edit | Is there an active `.context/<bead-id>/PLAN.md`? Nudges toward `/build` or `/quick`. |
40
60
  | `spec-before-plan` | Block | During `/build` | Did the agent read the module's doc page before creating a plan? Prevents hallucinated architecture. |
41
- | `decisions-before-execute` | Block | During `/go` | Does `.context/<bead-id>/DECISIONS.md` exist? No executing without confirmed decisions. |
61
+ | `decisions-before-execute` | Block | During `/go` | Does `.context/<feature-slug>/DECISIONS.md` exist? No executing without confirmed decisions. |
42
62
  | `plan-checker-passed` | Block | During `/go` | Has the plan-checker agent validated the plan? No executing unchecked plans. |
43
- | `no-scope-reduction` | Block | During `/plan` | Does the plan cover ALL locked decisions from DECISIONS.md? Catches silent simplification. |
63
+ | `no-scope-reduction` | Block | During `/build` | Does the plan cover ALL locked decisions from DECISIONS.md? Catches silent simplification. |
44
64
 
45
- ### Verification Rules
65
+ ### Verification Rules (prompt-enforced)
46
66
 
47
67
  | Rule | Severity | When | What it checks |
48
68
  |------|----------|------|---------------|
49
69
  | `verify-before-ship` | Block | During `/pr` | Has `/review` passed all success criteria? No shipping unverified work. |
50
- | `docs-before-ship` | Warn | During `/pr` | Are there closed beads without corresponding doc updates? Nudges toward `/docs`. |
51
70
  | `typecheck-before-ship` | Block | During `/pr` | Does `pnpm typecheck` pass? No shipping broken types. |
52
71
 
53
- ### Documentation Rules
72
+ ### Documentation Rules (prompt-enforced)
54
73
 
55
74
  | Rule | Severity | When | What it checks |
56
75
  |------|----------|------|---------------|
57
76
  | `cross-references` | Warn | During `/docs` | Does the updated doc page link to related modules? Flags isolated pages. |
58
77
  | `final-state-only` | Block | During `/docs` | Does the doc contain "planned", "coming soon", "TODO", "WIP"? Docs describe what IS. |
59
- | `module-registered` | Warn | During `/build` | Is the target module in `ystack.config.json`? Catches work outside any module's scope. |
60
-
61
- ### Context Rules
62
-
63
- | Rule | Severity | When | What it checks |
64
- |------|----------|------|---------------|
65
- | `context-budget` | Warn | PostToolUse | Is context usage above 60%? Suggests spawning subagents. |
66
- | `context-critical` | Warn | PostToolUse | Is context usage above 80%? Suggests finishing current task or `/pause`. |
78
+ | `module-registered` | Warn | During `/build` | Is the target module in `.ystack/config.json`? Catches work outside any module's scope. |
67
79
  | `reference-not-dump` | Warn | During `/build` | Did the agent inline a full doc page into the plan instead of referencing it? |
68
80
 
81
+ ---
82
+
69
83
  ## Adding Rules When You Add Skills
70
84
 
71
85
  Each skill can ship with its own lint rules. When you install a skill, its rules get added to the hook configuration automatically.
@@ -100,17 +114,15 @@ Rules evolve with the project:
100
114
 
101
115
  1. **Start soft.** New rules ship as `warn`. Teams adopt the practice before it becomes enforced.
102
116
  2. **Promote to block.** Once the team is comfortable, flip severity to `block` for critical rules.
103
- 3. **Project-specific rules.** Teams can add their own rules in `ystack.config.json`:
117
+ 3. **Project-specific rules.** Teams can add their own rules in `.ystack/config.json`:
104
118
 
105
119
  ```json
106
120
  {
107
121
  "linting": {
108
122
  "rules": {
109
123
  "plan-before-edit": "warn",
110
- "spec-before-plan": "block",
111
124
  "verify-before-ship": "block",
112
125
  "docs-before-ship": "warn",
113
- "cross-references": "warn",
114
126
  "custom-rules": [
115
127
  {
116
128
  "name": "security-review-for-auth",
@@ -137,53 +149,6 @@ Rules evolve with the project:
137
149
  }
138
150
  ```
139
151
 
140
- ## Implementation
141
-
142
- Agent lint rules are thin hooks. Each rule is a single check that runs at a specific point in the workflow.
143
-
144
- ### Hook Structure
145
-
146
- ```javascript
147
- // hooks/agent-lint.js
148
- // PostToolUse hook — runs after every tool call
149
-
150
- export default function agentLint({ tool, input, output, config }) {
151
- const rules = loadRules(config);
152
- const violations = [];
153
-
154
- for (const rule of rules) {
155
- if (rule.shouldRun(tool, input)) {
156
- const result = rule.check(tool, input, output);
157
- if (result.violated) {
158
- violations.push({
159
- rule: rule.name,
160
- severity: rule.severity,
161
- message: result.message
162
- });
163
- }
164
- }
165
- }
166
-
167
- // Warnings get surfaced as messages
168
- // Blocks prevent the action
169
- return formatViolations(violations);
170
- }
171
- ```
172
-
173
- ### What Rules Can Check
174
-
175
- Rules have access to:
176
- - **Tool name and input** — which tool was called and with what arguments
177
- - **File system** — read `.context/`, `ystack.config.json`, doc pages
178
- - **Beads state** — `bd show`, `bd ready` (via shell)
179
- - **Git state** — current diff, branch, recent commits
180
-
181
- Rules do NOT:
182
- - Modify files
183
- - Call external APIs
184
- - Block indefinitely
185
- - Access conversation history
186
-
187
152
  ## Code Linting vs. Agent Linting
188
153
 
189
154
  | | Code Linting | Agent Linting |
@@ -193,6 +158,6 @@ Rules do NOT:
193
158
  | **When** | Pre-commit hook | During agent execution |
194
159
  | **Grows with** | Language features | New skills and conventions |
195
160
  | **Examples** | "Use `const` not `let`" | "Read the spec before planning" |
196
- | **Configured in** | `biome.json` | `ystack.config.json` |
161
+ | **Configured in** | `biome.json` | `.ystack/config.json` |
197
162
 
198
163
  Both run automatically. Code linting on commit, agent linting during workflow. Together they ensure both the code and the process that produced it meet the team's standards.
package/PHILOSOPHY.md CHANGED
@@ -28,7 +28,7 @@ You write it once. It serves all four purposes. There is no separate "planning d
28
28
 
29
29
  ```
30
30
  Docs → What the system IS (final state)
31
- Beads → What's been done, what's left (development state)
31
+ Progress → What's been done, what's left (development state)
32
32
  Code → The actual implementation
33
33
  ```
34
34
 
@@ -36,9 +36,9 @@ These three layers never overlap in responsibility:
36
36
 
37
37
  **Docs** describe the finished design. They answer: what does this module do? How does it connect to other modules? What data does it manage? What are the contracts at its boundaries? Docs never contain "planned", "coming soon", "TODO", or "v2". If it's in the docs, it's built and working.
38
38
 
39
- **Beads** tracks the journey. It knows which features are implemented, which are in progress, which are blocked. It holds the structured notes that let an agent resume work after a context reset. It manages dependencies between tasks. Beads is the development state machine it knows where you are in the process.
39
+ **Progress files** track the journey. They record which features are implemented (checked), which are not yet built (unchecked), and which are blocked (via `depends-on:` annotations). They hold the decisions made during implementation and the notes that let an agent resume work after a context reset. Progress files are the development state — committed to git, branching and merging with the code they track.
40
40
 
41
- **Code** is the implementation. It doesn't need to explain itself beyond what's necessary for maintenance. The architecture lives in docs. The progress lives in Beads. The code just works.
41
+ **Code** is the implementation. It doesn't need to explain itself beyond what's necessary for maintenance. The architecture lives in docs. The progress lives in `.ystack/progress/`. The code just works.
42
42
 
43
43
  ## Why Human-Readable Markdown
44
44
 
@@ -62,7 +62,7 @@ This matters because:
62
62
  2. **Docs change.** A reference always points to the current version. Inlined content is stale the moment it's pasted.
63
63
  3. **Agents can navigate.** A doc page with cross-references lets the agent follow links to related modules, just like a human developer would.
64
64
 
65
- The module registry (`ystack.config.json`) exists to give agents a map: "payments lives here in the code, here in the docs, and here in Beads." From that map, the agent reads what it needs, when it needs it.
65
+ The module registry (`.ystack/config.json`) exists to give agents a map: "payments lives here in the code, here in the docs, and here in the progress files." From that map, the agent reads what it needs, when it needs it.
66
66
 
67
67
  ## Connected Documentation
68
68
 
@@ -91,21 +91,21 @@ The module registry bridges three worlds:
91
91
  "packages/payments/**",
92
92
  "packages/db/src/schema/transactions.*",
93
93
  "apps/api/src/routes/payments.*"
94
- ],
95
- "epic": "bd-a1b2"
94
+ ]
96
95
  }
97
96
  }
98
97
  ```
99
98
 
100
99
  - **doc** → where to read the spec (and where to write updates when features complete)
101
100
  - **scope** → where the code lives, as glob patterns. A module doesn't have to be a package — it can span files across multiple packages, or live within a subdirectory of one. This is what to scan when planning and what to verify when done.
102
- - **epic** → where progress lives (which features are built, which are pending)
103
101
 
104
- The registry tracks **modules only**. Sub-modules are tracked by the docs site (sub-pages within a module). Features are tracked by Beads (child beads under the module's epic). Each layer has its own hierarchy — the registry connects the top level.
102
+ Progress is tracked by convention in `.ystack/progress/<module-key>.md` one file per module, with feature checklists, decisions, and notes.
105
103
 
106
- When a Beads epic's child closes, ystack knows which doc page might need updating. When `/build` starts planning, it knows which files across the repo are relevant. When `/import` scans an existing repo, it builds this map automatically.
104
+ The registry tracks **modules only**. Sub-modules are tracked by the docs site (sub-pages within a module). Features are tracked in progress files (checklist items in the module's progress file). Each layer has its own hierarchy the registry connects the top level.
107
105
 
108
- The registry is small, stable, and rarely changes. It's the index the docs, code, and beads are the content.
106
+ When a feature is checked off in a progress file, ystack knows which doc page might need updating. When `/build` starts planning, it knows which files across the repo are relevant. When `/import` scans an existing repo, it builds this map automatically.
107
+
108
+ The registry is small, stable, and rarely changes. It's the index — the docs, code, and progress files are the content.
109
109
 
110
110
  ## Documentation Reflects Only Completed Work
111
111
 
@@ -119,7 +119,7 @@ This means:
119
119
  - There's no "planned" section that's been "planned" for six months
120
120
  - The gap between docs and reality is always zero for documented features
121
121
 
122
- Beads tracks what's planned and in progress. That's its job. Docs track what's done. The boundary is clean.
122
+ Progress files track what's planned and in progress. That's their role. Docs track what's done. The boundary is clean.
123
123
 
124
124
  ## Why This Works for Teams
125
125
 
package/README.md CHANGED
@@ -1,81 +1,134 @@
1
1
  # ystack
2
2
 
3
- An agent harness for doc-driven development — built on top of [Beads](https://github.com/gastownhall/beads).
3
+ ```
4
+ _ _
5
+ _ _ ___| |_ __ _ ___| | __
6
+ | | | / __| __/ _` |/ __| |/ /
7
+ | |_| \__ \ || (_| | (__| <
8
+ \__, |___/\__\__,_|\___|_|\_\
9
+ |___/
10
+ ```
11
+
12
+ [![npm version](https://img.shields.io/npm/v/ystack)](https://www.npmjs.com/package/ystack)
13
+ [![license](https://img.shields.io/npm/l/ystack)](./LICENSE)
14
+
15
+ **An agent harness for doc-driven development** — with git-native progress tracking.
4
16
 
5
17
  > **Status:** Early release (v0.1) — Claude Code only. Multi-runtime support is planned.
6
18
 
19
+ ```bash
20
+ # Interactive setup guide
21
+ npx ystack
22
+
23
+ # New project with opinionated defaults
24
+ npx ystack create my-app
25
+
26
+ # Add to an existing project
27
+ cd your-project && npx ystack init
28
+ ```
29
+
30
+ ---
31
+
7
32
  ## Why
8
33
 
9
- AI coding agents are capable but unstructured. Without guardrails, they:
34
+ AI coding agents are capable but unstructured. Without guardrails:
35
+
36
+ ```
37
+ Without ystack With ystack
38
+ ────────────── ──────────────
39
+
40
+ "Build auth" "Build auth"
41
+ │ │
42
+ ▼ ▼
43
+ ┌────────────┐ ┌────────────┐
44
+ │ Hallucinate│ │ Read spec │
45
+ │ a design │ │ first │
46
+ └─────┬──────┘ └─────┬──────┘
47
+ ▼ ▼
48
+ ┌────────────┐ ┌────────────┐
49
+ │ Code it all│ │ Plan tasks │
50
+ │ at once │ │ you confirm│
51
+ └─────┬──────┘ └─────┬──────┘
52
+ ▼ ▼
53
+ ┌────────────┐ ┌────────────┐
54
+ │ "Done!" │ │ Execute + │
55
+ │ (is it?) │ │ verify │
56
+ └─────┬──────┘ └─────┬──────┘
57
+ ▼ ▼
58
+ ┌────────────┐ ┌────────────┐
59
+ │ Docs? What │ │ Update │
60
+ │ docs? │ │ docs │
61
+ └────────────┘ └────────────┘
62
+ ```
10
63
 
11
- - **Hallucinate architecture** invent module boundaries that don't exist
12
- - **Silently simplify** — deliver a "v1" of what you asked for instead of the real thing
13
- - **Lose context** — forget decisions from 20 minutes ago as the context window fills
14
- - **Skip verification** — mark tasks done without checking the code actually works
15
- - **Ignore docs** — write code that drifts from the documented design, or never update docs at all
64
+ See [PHILOSOPHY.md](./PHILOSOPHY.md) for the full design rationale.
16
65
 
17
- ystack fixes this. It makes agents read the spec before coding, plan before executing, verify against success criteria, and update docs when done. See [PHILOSOPHY.md](./PHILOSOPHY.md) for the full design rationale.
66
+ ---
18
67
 
19
68
  ## How It Works
20
69
 
21
70
  Three layers, connected by a module registry:
22
71
 
23
72
  ```
24
- Docs (MDX) Beads (bd) Code
25
- What it IS ◄─── What's done / ───► The actual
26
- Final specs what's left implementation
27
- ▲ ▲ ▲
28
- └───────────────────┴────────────────────┘
29
- Module Registry
30
- (ystack.config.json)
73
+ ┌──────────────────────────────────────────────────────────┐
74
+ │ .ystack/config.json │
75
+ │ (Module Registry) │
76
+ ├──────────────────┬──────────────────┬────────────────────┤
77
+ │ │ │ │
78
+ │ Docs (MDX) │ Progress │ Code │
79
+ │ ━━━━━━━━━━ │ (.ystack/) │ ━━━━ │
80
+ │ What it IS │ ━━━━━━━━━━ │ The actual │
81
+ │ Final specs │ What's DONE │ implementation │
82
+ │ Design truth │ What's LEFT │ Lives here │
83
+ │ │ State layer │ │
84
+ │ agents read <──┼── tracks ───────>┼── agents write │
85
+ │ │ │ │
86
+ └──────────────────┴──────────────────┴────────────────────┘
31
87
  ```
32
88
 
33
- | Layer | Role |
34
- |-------|------|
35
- | **Docs** | The spec agents read, the reference your team reads, the contract between modules. Written once, serves all three. |
36
- | **Beads** | Development state machine. What's built, in progress, or blocked. Persistent memory that survives context resets. |
37
- | **Code** | The implementation. Architecture lives in docs, progress lives in Beads. |
38
-
39
- Each module in `ystack.config.json` maps a doc page, code scope (glob patterns), and a Beads epic:
89
+ Each module maps a doc page and code scope:
40
90
 
41
91
  ```json
42
92
  {
43
93
  "modules": {
44
94
  "payments": {
45
95
  "doc": "shared/payments",
46
- "scope": ["packages/payments/**", "apps/api/src/routes/payments.*"],
47
- "epic": "bd-a1b2"
96
+ "scope": ["packages/payments/**", "apps/api/src/routes/payments.*"]
48
97
  }
49
98
  }
50
99
  }
51
100
  ```
52
101
 
53
- ## Commands
102
+ ---
54
103
 
55
- ### Setup
104
+ ## The Workflow
56
105
 
57
- | Command | What it does |
58
- |---------|-------------|
59
- | `/scaffold` | Takes a big plan, splits it into module doc stubs + interaction diagrams + epic beads |
60
- | `/import` | Scans an existing repo, generates module registry, flags doc gaps |
106
+ ```
107
+ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
108
+ │/scaffold │───>│ /build │───>│ /go │───>│ /review │───>│ /docs │───>│ /pr │
109
+ or │ │ │ │ │ │ │ │ │ │ │
110
+ │/import │ │ Plan & │ │ Execute │ │ Verify │ │ Update │ │ Ship │
111
+ │ │ │ confirm │ │ tasks w/ │ │ against │ │ docs for │ │ it │
112
+ │ Scan or │ │ with │ │ fresh │ │ success │ │completed │ │ │
113
+ │ scaffold │ │ user │ │subagents │ │ criteria │ │ work │ │ │
114
+ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
115
+ ```
61
116
 
62
- ### Build cycle
117
+ ### Commands
63
118
 
64
119
  | Command | What it does |
65
120
  |---------|-------------|
121
+ | `/scaffold` | Takes a big plan, splits into module doc stubs + diagrams + progress files |
122
+ | `/import` | Scans existing repo, generates module registry, flags doc gaps |
66
123
  | `/build <feature>` | Reads docs + code, surfaces assumptions, creates a plan. You confirm. |
67
- | `/go` | Executes the plan — fresh subagent per task, atomic commits. |
68
- | `/review` | Code review + goal-backward verification against success criteria. |
69
- | `/docs` | Updates documentation for completed work (only completed, never planned). |
70
- | `/pr` | Verify, docs check, create PR. |
71
- | `/address-review` | Fetch PR review comments, triage by priority, address approved fixes. |
124
+ | `/go` | Executes the plan — fresh subagent per task, atomic commits |
125
+ | `/quick` | Fast path for bug fixes, chores, small changes — skip planning and progress |
126
+ | `/review` | Code review + goal-backward verification against success criteria |
127
+ | `/docs` | Updates documentation for completed work (only completed, never planned) |
128
+ | `/pr` | Verify, docs check, create PR |
129
+ | `/address-review` | Fetch PR review comments, triage by priority, address approved fixes |
72
130
 
73
- ### The flow
74
-
75
- ```
76
- New project: big plan → /scaffold → /build → /go → /review → /docs → /pr
77
- Existing project: repo → /import → /build → /go → /review → /docs → /pr
78
- ```
131
+ ---
79
132
 
80
133
  ## Getting Started
81
134
 
@@ -96,7 +149,14 @@ See [INSTALL.md](./INSTALL.md) for full setup options, prerequisites, and config
96
149
  - [INSTALL.md](./INSTALL.md) — Installation and default stack
97
150
  - [LINTING.md](./LINTING.md) — Agent linting rules
98
151
  - [RUNTIMES.md](./RUNTIMES.md) — Multi-runtime support
99
- - [PLAN.md](./PLAN.md) — Roadmap and command specs
152
+
153
+ ## Contributing
154
+
155
+ Issues and PRs welcome. Please open an issue before starting large changes.
156
+
157
+ ## Changelog
158
+
159
+ See [CHANGELOG.md](./CHANGELOG.md) for release history.
100
160
 
101
161
  ## License
102
162
 
package/RUNTIMES.md CHANGED
@@ -58,10 +58,10 @@ ystack/
58
58
  ### Core (agent-agnostic)
59
59
 
60
60
  The prompts in `core/prompts/` are the actual skill logic. They reference:
61
- - `ystack.config.json` for the module registry
62
- - `bd` CLI for Beads operations
61
+ - `.ystack/config.json` for the module registry
62
+ - `.ystack/progress/` for development state
63
63
  - Doc page paths (resolved from the registry)
64
- - `.context/<bead-id>/` for temporary state
64
+ - `.context/<feature-slug>/` for temporary state
65
65
 
66
66
  These are pure markdown instructions that any LLM can follow. They don't use Claude-specific features, tool names, or XML tags.
67
67
 
@@ -105,7 +105,7 @@ Not all runtimes can do everything. ystack degrades gracefully:
105
105
  | **Runtimes** | Claude Code, Gemini CLI | Codex, Cursor | Copilot, Windsurf |
106
106
  | **Subagents** | Yes — fresh context per task | No — inline execution | No |
107
107
  | **Hooks** | Yes — pre/post tool use | No — rules embedded in prompts | No |
108
- | **Beads** | Full (`bd` CLI) | Full (`bd` CLI) | Full (`bd` CLI) |
108
+ | **Progress files** | Git-native markdown | Git-native markdown | Git-native markdown |
109
109
  | **Docs reading** | Selective (agent navigates) | Selective | Selective |
110
110
  | **Plan-checker** | Separate agent validates | Self-check in same context | Self-check |
111
111
  | **Parallel execution** | Yes (wave-based) | Sequential | Sequential |
@@ -121,7 +121,7 @@ Claude Code and Gemini CLI support subagents and hooks. They get the full experi
121
121
 
122
122
  ### Tier 2: Inline Execution
123
123
 
124
- Codex and Cursor can run `bd` commands and read files, but have no subagent support. The harness adapts:
124
+ Codex and Cursor can read files, but have no subagent support. The harness adapts:
125
125
  - `/go` executes tasks sequentially in the same context
126
126
  - Plan-checker runs as a self-review step (not a separate agent)
127
127
  - Lint rules are embedded in the prompt ("before editing, verify you've read the spec")
@@ -134,22 +134,22 @@ This is still valuable. The workflow (build → go → review → docs → pr) w
134
134
  Copilot and Windsurf have minimal configuration. They get the workflow as natural language instructions:
135
135
  - No slash commands — the instructions describe the process to follow
136
136
  - The agent is told: "When asked to build a feature, first read the module's doc page..."
137
- - Beads still works (any agent with shell access can use `bd`)
137
+ - Progress files are just markdown — any agent can read and write them
138
138
  - Verification is self-check only
139
139
 
140
- Even at this tier, having Beads + docs + module registry is a significant upgrade over nothing.
140
+ Even at this tier, having progress files + docs + module registry is a significant upgrade over nothing.
141
141
 
142
142
  ## What Stays Universal
143
143
 
144
144
  Regardless of runtime, every agent gets:
145
145
 
146
- 1. **Beads** — any agent with shell access can run `bd ready`, `bd create`, `bd close`. The persistent memory layer works everywhere.
146
+ 1. **Progress files** — any agent can read and write markdown. The progress tracking layer (`.ystack/progress/`) is just files in git.
147
147
 
148
148
  2. **Docs** — every agent can read markdown files. The documentation-as-spec pattern is runtime-agnostic.
149
149
 
150
- 3. **Module registry** — `ystack.config.json` is JSON. Any agent can parse it to find the right doc page and code scope.
150
+ 3. **Module registry** — `.ystack/config.json` is JSON. Any agent can parse it to find the right doc page and code scope.
151
151
 
152
- 4. **`.context/<bead-id>/`** — PLAN.md and DECISIONS.md are markdown files. Any agent can read and write them.
152
+ 4. **`.context/<feature-slug>/`** — PLAN.md and DECISIONS.md are markdown files. Any agent can read and write them.
153
153
 
154
154
  5. **The workflow** — build → go → review → docs → pr is a process, not a tool feature. It works in any agent that can follow multi-step instructions.
155
155