acstack 0.53.1 → 0.54.1

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.
Files changed (87) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +11 -11
  3. package/agents/codex/frontend-verifier.toml +8 -7
  4. package/agents/codex/task-checker.toml +1 -1
  5. package/agents/codex/task-executor.toml +1 -1
  6. package/agents/codex/test-writer.toml +1 -1
  7. package/agents/frontend-verifier.md +8 -7
  8. package/agents/task-checker.md +1 -1
  9. package/agents/task-executor.md +1 -1
  10. package/agents/test-writer.md +1 -1
  11. package/assets/playwriter-bridge/doctor.ps1 +1 -1
  12. package/assets/playwriter-bridge/register-tasks.ps1 +4 -4
  13. package/assets/terminal-workspace/config.example.yaml +2 -2
  14. package/assets/terminal-workspace/helpers/acstack-bridge +3 -1
  15. package/assets/terminal-workspace/helpers/acstack-db +1 -1
  16. package/assets/terminal-workspace/helpers/acstack-md +4 -2
  17. package/assets/terminal-workspace/helpers/acstack-md-lib +2 -2
  18. package/assets/terminal-workspace/helpers/acstack-open +1 -1
  19. package/assets/terminal-workspace/lib/apply-herdr-numbers.sh +1 -1
  20. package/assets/terminal-workspace/lib/apply-tools.sh +1 -1
  21. package/assets/terminal-workspace/lib/apply-tuicr.sh +2 -2
  22. package/assets/terminal-workspace/lib/commands.sh +1 -1
  23. package/assets/terminal-workspace/lib/helper-install.sh +1 -1
  24. package/assets/terminal-workspace/setup.sh +6 -1
  25. package/cli/dist/index.js +713 -523
  26. package/cli/dist/index.js.map +4 -4
  27. package/cli/package.json +1 -1
  28. package/docs/config-reference.md +129 -87
  29. package/docs/dev-setups.md +4 -4
  30. package/docs/terminal-workspace.md +7 -6
  31. package/docs/workflows.md +13 -12
  32. package/examples/design-doc/acstack/README.md +3 -3
  33. package/examples/design-doc/acstack/journey.md +1 -1
  34. package/examples/design-doc/acstack/publication.md +1 -1
  35. package/hooks/context-pressure.sh +6 -2
  36. package/hooks/lib/read-guard.mjs +25 -21
  37. package/hooks/project-data.sh +5 -34
  38. package/hooks/session-start-handoff.sh +11 -22
  39. package/hooks/session-start.sh +5 -6
  40. package/orchestrator/AGENTS.md +30 -25
  41. package/package.json +1 -1
  42. package/pi/agents/frontend-verifier.md +8 -7
  43. package/pi/agents/task-checker.md +1 -1
  44. package/pi/agents/task-executor.md +1 -1
  45. package/pi/agents/test-writer.md +1 -1
  46. package/pi/extension.ts +39 -57
  47. package/profiles/fullstack-python.yaml +1 -1
  48. package/profiles/node-typescript.yaml +1 -1
  49. package/profiles/python.yaml +1 -1
  50. package/skills/archive/SKILL.md +20 -18
  51. package/skills/bootstrap/SKILL.md +6 -6
  52. package/skills/bridge/SKILL-VM.md +5 -5
  53. package/skills/bridge/SKILL-WINDOWS.md +1 -1
  54. package/skills/browser-verify/SKILL.md +6 -6
  55. package/skills/commit/SKILL.md +8 -8
  56. package/skills/compact-and-continue/SKILL.md +11 -9
  57. package/skills/design-doc/SKILL.md +8 -5
  58. package/skills/explore/SKILL.md +1 -1
  59. package/skills/grilling/SKILL.md +4 -3
  60. package/skills/handoff/SKILL.md +4 -4
  61. package/skills/host/SKILL.md +2 -2
  62. package/skills/host/detect-host.sh +8 -4
  63. package/skills/host/herdr.md +1 -1
  64. package/skills/host/install-herdr-block.sh +1 -1
  65. package/skills/host/notes.md +5 -4
  66. package/skills/host/questions.md +1 -1
  67. package/skills/host/report.md +2 -2
  68. package/skills/implement/SKILL.md +6 -5
  69. package/skills/implement/decision-log.md +10 -15
  70. package/skills/implement/design-pass.md +2 -2
  71. package/skills/map/SKILL.md +5 -3
  72. package/skills/map/frontend.md +2 -2
  73. package/skills/map/materialising.md +5 -3
  74. package/skills/map/trackers/files.md +6 -4
  75. package/skills/pre-commit-review/SKILL.md +3 -3
  76. package/skills/quick-fix/SKILL.md +1 -1
  77. package/skills/record-context/SKILL.md +6 -6
  78. package/skills/setup/SKILL.md +20 -11
  79. package/skills/setup/browser.md +2 -2
  80. package/skills/setup/first-run.md +14 -16
  81. package/skills/setup/report.md +4 -3
  82. package/skills/setup/row-fixes.md +7 -8
  83. package/skills/sync/SKILL.md +14 -12
  84. package/skills/terminal-workspace/SKILL.md +4 -4
  85. package/skills/terminal-workspace/headless-clipboard.md +1 -1
  86. package/skills/terminal-workspace/turn-off-and-update.md +1 -1
  87. package/skills/test-conventions/SKILL.md +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: sync
3
- description: Update living specs in .acstack/specs/ from recent code changes. Called automatically by /commit for retroactive spec updates. Can also be invoked manually.
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
- `.acstack/specs/` to reflect what changed. It is the "fast path" mechanism
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; stage updated specs only when the user opted into tracking them.
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 `.acstack/domain-map.yaml`
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 `.acstack/specs/[domain]/spec.md` (if it exists)
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 `.acstack/HANDOFF.md` after a
113
- compaction, then moves the file into `.acstack/handoffs/`.
114
- - **Behavior**: Given `.acstack/HANDOFF.md` carries the `acstack_handoff`
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 `.acstack/CONTEXT.md` (cross-domain terms) and
133
- `.acstack/specs/[domain]/CONTEXT.md` (domain terms). If neither exists, skip.
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 native `.gitignore` rules allow tracking
166
- - Keep ignored specs updated locally; never force-add them or change the Git index to bypass the user's choice
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/>(~/.config/acstack/terminal-workspace.yaml)"]
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
- `.acstack/project.yaml`.
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**: `~/.config/acstack/terminal-workspace.yaml`, copied from `assets/terminal-workspace/config.example.yaml`
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" ~/.config/acstack/terminal-workspace.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
- `~/.config/acstack/opener.token`. The service answers on
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 `~/.config/acstack/terminal-workspace.pi.json`
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 `.acstack/project.yaml` for `directories.source`, `directories.tests`, and `frontend` config.
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 `.acstack/.test-baseline` if present; investigate removed coverage and honor project baseline requirements
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