acstack 0.53.0 → 0.54.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/.claude-plugin/plugin.json +1 -1
- package/README.md +11 -11
- package/agents/codex/frontend-verifier.toml +8 -7
- package/agents/codex/task-checker.toml +1 -1
- package/agents/codex/task-executor.toml +1 -1
- package/agents/codex/test-writer.toml +1 -1
- package/agents/frontend-verifier.md +8 -7
- package/agents/task-checker.md +1 -1
- package/agents/task-executor.md +1 -1
- package/agents/test-writer.md +1 -1
- package/assets/playwriter-bridge/doctor.ps1 +1 -1
- package/assets/playwriter-bridge/register-tasks.ps1 +4 -4
- package/assets/terminal-workspace/config.example.yaml +2 -2
- package/assets/terminal-workspace/helpers/acstack-bridge +3 -1
- package/assets/terminal-workspace/helpers/acstack-db +1 -1
- package/assets/terminal-workspace/helpers/acstack-md +4 -2
- package/assets/terminal-workspace/helpers/acstack-md-lib +2 -2
- package/assets/terminal-workspace/helpers/acstack-open +1 -1
- package/assets/terminal-workspace/lib/apply-herdr-numbers.sh +1 -1
- package/assets/terminal-workspace/lib/apply-tools.sh +1 -1
- package/assets/terminal-workspace/lib/apply-tuicr.sh +2 -2
- package/assets/terminal-workspace/lib/commands.sh +1 -1
- package/assets/terminal-workspace/lib/helper-install.sh +1 -1
- package/assets/terminal-workspace/setup.sh +6 -1
- package/cli/dist/index.js +698 -510
- package/cli/dist/index.js.map +4 -4
- package/cli/package.json +1 -1
- package/docs/config-reference.md +129 -87
- package/docs/dev-setups.md +4 -4
- package/docs/terminal-workspace.md +7 -6
- package/docs/workflows.md +13 -12
- package/examples/design-doc/acstack/README.md +3 -3
- package/examples/design-doc/acstack/journey.md +1 -1
- package/examples/design-doc/acstack/publication.md +1 -1
- package/hooks/context-pressure.sh +6 -2
- package/hooks/lib/read-guard.mjs +25 -21
- package/hooks/project-data.sh +5 -34
- package/hooks/session-start-handoff.sh +11 -22
- package/hooks/session-start.sh +5 -6
- package/orchestrator/AGENTS.md +30 -25
- package/package.json +1 -1
- package/pi/agents/frontend-verifier.md +8 -7
- package/pi/agents/task-checker.md +1 -1
- package/pi/agents/task-executor.md +1 -1
- package/pi/agents/test-writer.md +1 -1
- package/pi/extension.ts +39 -57
- package/profiles/fullstack-python.yaml +1 -1
- package/profiles/node-typescript.yaml +1 -1
- package/profiles/python.yaml +1 -1
- package/skills/archive/SKILL.md +20 -18
- package/skills/bootstrap/SKILL.md +6 -6
- package/skills/bridge/SKILL-VM.md +5 -5
- package/skills/bridge/SKILL-WINDOWS.md +1 -1
- package/skills/browser-verify/SKILL.md +6 -6
- package/skills/commit/SKILL.md +8 -8
- package/skills/compact-and-continue/SKILL.md +11 -9
- package/skills/design-doc/SKILL.md +8 -5
- package/skills/explore/SKILL.md +1 -1
- package/skills/grilling/SKILL.md +4 -3
- package/skills/handoff/SKILL.md +4 -4
- package/skills/host/SKILL.md +2 -2
- package/skills/host/detect-host.sh +8 -4
- package/skills/host/herdr.md +1 -1
- package/skills/host/install-herdr-block.sh +1 -1
- package/skills/host/notes.md +5 -4
- package/skills/host/questions.md +1 -1
- package/skills/host/report.md +2 -2
- package/skills/implement/SKILL.md +6 -5
- package/skills/implement/decision-log.md +10 -15
- package/skills/implement/design-pass.md +2 -2
- package/skills/map/SKILL.md +5 -3
- package/skills/map/frontend.md +2 -2
- package/skills/map/materialising.md +5 -3
- package/skills/map/trackers/files.md +6 -4
- package/skills/pre-commit-review/SKILL.md +3 -3
- package/skills/quick-fix/SKILL.md +1 -1
- package/skills/record-context/SKILL.md +6 -6
- package/skills/setup/SKILL.md +20 -11
- package/skills/setup/browser.md +2 -2
- package/skills/setup/first-run.md +14 -16
- package/skills/setup/report.md +4 -3
- package/skills/setup/row-fixes.md +7 -8
- package/skills/sync/SKILL.md +14 -12
- package/skills/terminal-workspace/SKILL.md +4 -4
- package/skills/terminal-workspace/headless-clipboard.md +1 -1
- package/skills/terminal-workspace/turn-off-and-update.md +1 -1
- package/skills/test-conventions/SKILL.md +2 -2
package/skills/sync/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sync
|
|
3
|
-
description: Update living specs in
|
|
3
|
+
description: Update living specs in the project folder's specs/ from recent code changes. Called automatically by /commit for retroactive spec updates. Can also be invoked manually.
|
|
4
4
|
argument-hint: "[file-paths or 'staged']"
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -15,7 +15,8 @@ You **MUST** consider the user input before proceeding (if not empty).
|
|
|
15
15
|
## Purpose
|
|
16
16
|
|
|
17
17
|
This skill analyzes code changes. It updates the cumulative living specs in
|
|
18
|
-
|
|
18
|
+
`<project folder>/specs/` to reflect what changed. The project folder is the
|
|
19
|
+
path `~/.claude/acstack/bin/acstack project-data path` prints. It is the "fast path" mechanism
|
|
19
20
|
that keeps specs current even when a workflow skips full spec planning.
|
|
20
21
|
|
|
21
22
|
## Step 1: determine change scope
|
|
@@ -81,11 +82,11 @@ domain.
|
|
|
81
82
|
5. Stage what `document` wrote
|
|
82
83
|
|
|
83
84
|
`document` writes `DESIGN.md` and `.impeccable/design.json`. Stage both
|
|
84
|
-
with the commit
|
|
85
|
+
with the commit. Specs follow the staging rule in Integration with /commit.
|
|
85
86
|
|
|
86
87
|
## Step 3: map changes to domains
|
|
87
88
|
|
|
88
|
-
1. Read
|
|
89
|
+
1. Read `<project folder>/domain-map.yaml`
|
|
89
90
|
2. Match changed files against domain path patterns
|
|
90
91
|
3. Group changes by domain
|
|
91
92
|
4. Skip files outside all domains (tests, config, docs)
|
|
@@ -96,7 +97,7 @@ If the diff affects no domains, report "No spec-relevant changes". Then exit.
|
|
|
96
97
|
|
|
97
98
|
For each affected domain:
|
|
98
99
|
|
|
99
|
-
1. Read
|
|
100
|
+
1. Read `<project folder>/specs/[domain]/spec.md` (if it exists)
|
|
100
101
|
2. Analyze changes:
|
|
101
102
|
- New functions/endpoints/components -> ADDED requirements
|
|
102
103
|
- Modified signatures or behavior -> MODIFIED requirements
|
|
@@ -109,9 +110,9 @@ Write each functional requirement (FR) entry per the `writing` skill.
|
|
|
109
110
|
```markdown
|
|
110
111
|
### FR-014: The handoff anchor loads once
|
|
111
112
|
|
|
112
|
-
- **Description**: The SessionStart hook injects
|
|
113
|
-
compaction, then moves the file into
|
|
114
|
-
- **Behavior**: Given
|
|
113
|
+
- **Description**: The SessionStart hook injects `<project folder>/HANDOFF.md` after a
|
|
114
|
+
compaction, then moves the file into `<project folder>/handoffs/`.
|
|
115
|
+
- **Behavior**: Given `<project folder>/HANDOFF.md` carries the `acstack_handoff`
|
|
115
116
|
marker, When a session starts with source `compact`, Then the hook injects
|
|
116
117
|
the file and retires it.
|
|
117
118
|
- **Source**: `hooks/session-start-handoff.sh`
|
|
@@ -129,8 +130,8 @@ Write each merged FR per the `writing` skill.
|
|
|
129
130
|
|
|
130
131
|
## Step 6: glossary check
|
|
131
132
|
|
|
132
|
-
Glossaries live in
|
|
133
|
-
|
|
133
|
+
Glossaries live in `<project folder>/CONTEXT.md` (cross-domain terms) and
|
|
134
|
+
`<project folder>/specs/[domain]/CONTEXT.md` (domain terms). If neither exists, skip.
|
|
134
135
|
|
|
135
136
|
For each glossary term, check the diff. Look for a renamed or deleted
|
|
136
137
|
identifier that matches it: function, class, table, config key, route. If
|
|
@@ -162,8 +163,9 @@ When `/commit` calls this skill:
|
|
|
162
163
|
|
|
163
164
|
1. Receives the staged diff as context
|
|
164
165
|
2. Runs silently (no user prompts)
|
|
165
|
-
3. Returns modified specs for staging only when
|
|
166
|
-
-
|
|
166
|
+
3. Returns modified specs for staging only when they sit inside the current working tree
|
|
167
|
+
- That happens only in tracked mode, when you commit in the main checkout
|
|
168
|
+
- Otherwise the specs stay updated in the project folder and out of the commit
|
|
167
169
|
4. Adds `DESIGN.md` and `.impeccable/design.json` when Step 2 refreshed them
|
|
168
170
|
5. Outputs minimal detail so it does not interrupt the commit flow
|
|
169
171
|
|
|
@@ -27,7 +27,7 @@ ACStack does not need any of this. Offer it, do not assume it.
|
|
|
27
27
|
```mermaid
|
|
28
28
|
flowchart TD
|
|
29
29
|
IN["Twelve components, one YAML file<br/>(machine-level, not per-project)"] --> ST["See what this machine has<br/>(setup.sh status)"]
|
|
30
|
-
ST --> CF["Copy the config, walk the choices<br/>(~/.
|
|
30
|
+
ST --> CF["Copy the config, walk the choices<br/>(~/.acstack/terminal-workspace.yaml)"]
|
|
31
31
|
CF --> AP["Install binaries, write the keys<br/>(setup.sh apply)"]
|
|
32
32
|
AP --> Q{"How does the user reach<br/>this machine?"}
|
|
33
33
|
Q -->|"an SSH shell"| KB["Free the keys the emulator swallows<br/>(client-keybindings.md)"]
|
|
@@ -58,7 +58,7 @@ flowchart TD
|
|
|
58
58
|
|
|
59
59
|
This is **machine-level, not per-project**. It installs binaries and writes
|
|
60
60
|
keybindings for the user account, so it does not belong in
|
|
61
|
-
|
|
61
|
+
the project folder's `project.yaml`.
|
|
62
62
|
|
|
63
63
|
Count components when you mean config keys, and tools when you mean binaries.
|
|
64
64
|
The config holds twelve component sections, plus an `enabled` master switch
|
|
@@ -76,7 +76,7 @@ Read [`components.md`](components.md) when the user asks what a component does,
|
|
|
76
76
|
|
|
77
77
|
The two files this skill works with:
|
|
78
78
|
|
|
79
|
-
- **Config**: `~/.
|
|
79
|
+
- **Config**: `~/.acstack/terminal-workspace.yaml`, copied from `assets/terminal-workspace/config.example.yaml`
|
|
80
80
|
- **Script**: `assets/terminal-workspace/setup.sh` in this plugin
|
|
81
81
|
|
|
82
82
|
Yazi's `i` opens Markdown in Frogmouth (`pipx install frogmouth`); existing `i` bindings take precedence, and `e` keeps editing in `$EDITOR`.
|
|
@@ -125,7 +125,7 @@ Its last lines say where a copy and an open will land on this machine. Section
|
|
|
125
125
|
Copy the example config before the first `apply`:
|
|
126
126
|
|
|
127
127
|
```bash
|
|
128
|
-
cp "$(dirname "$SETUP")/config.example.yaml" ~/.
|
|
128
|
+
mkdir -p ~/.acstack && cp "$(dirname "$SETUP")/config.example.yaml" ~/.acstack/terminal-workspace.yaml
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
Then read [`config-choices.md`](config-choices.md) and ask about the settings it lists, in its order.
|
|
@@ -69,7 +69,7 @@ for the opener. One can be up while the other is down.
|
|
|
69
69
|
|
|
70
70
|
The opener has no key in this config, so do not invent one. `acstack-open` takes
|
|
71
71
|
that route only when two things hold. A token file sits at
|
|
72
|
-
`~/.
|
|
72
|
+
`~/.acstack/opener.token`. The service answers on
|
|
73
73
|
`http://127.0.0.1:19989` with that token.
|
|
74
74
|
|
|
75
75
|
Setting `ACSTACK_OPEN_OPENER=off` in the environment skips the route.
|
|
@@ -32,7 +32,7 @@ and leaves the rest of the user's neovim config alone. Neither `disable` nor
|
|
|
32
32
|
- It removes agentic-retro's extension only when `apply` was the one to write it
|
|
33
33
|
- It keeps the pi binary, its logins and its sessions
|
|
34
34
|
- It touches nothing in a `settings.json` that does not parse, and says so
|
|
35
|
-
- It records what it added in `~/.
|
|
35
|
+
- It records what it added in `~/.acstack/terminal-workspace.pi.json`
|
|
36
36
|
|
|
37
37
|
`yazi`, `markdown` and `remote` have no `disable` path. `disable` refuses for
|
|
38
38
|
those three and names the edit that turns one off. Set the component's
|
|
@@ -7,7 +7,7 @@ description: Test placement rules and framework conventions. Invoke before writi
|
|
|
7
7
|
|
|
8
8
|
## Decision Tree: Where Does My Test Go?
|
|
9
9
|
|
|
10
|
-
Read
|
|
10
|
+
Read `<project folder>/project.yaml` for `directories.source`, `directories.tests`, and `frontend` config. The project folder is the path `~/.claude/acstack/bin/acstack project-data path` prints.
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
Backend code? → <tests-dir>/<mirror-source-path>/test_<module>.py
|
|
@@ -25,7 +25,7 @@ Mirror the source directory structure. Example: `src/auth/sessions.py` → `test
|
|
|
25
25
|
- Shared fixtures → `<tests-dir>/conftest.py` (Python) or shared setup files
|
|
26
26
|
- Use markers for slow/integration tests (configured in `test_markers.exclude`)
|
|
27
27
|
- Use the project's test runner for focused checks; the verification owner gathers full completion evidence under `orchestrator/AGENTS.md`
|
|
28
|
-
- When test collection is configured, compare
|
|
28
|
+
- When test collection is configured, compare `<project folder>/.test-baseline` if present; investigate removed coverage and honor project baseline requirements
|
|
29
29
|
|
|
30
30
|
## Layer 2: Frontend Unit Tests
|
|
31
31
|
|