You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(dso-igoj batch1): config reference docs, setup audit, preplanning story bodies
- docs/CONFIGURATION-REFERENCE.md: new 47-key workflow-config.conf reference and 25 env var docs (dso-xtcg)
- .tickets/dso-bxd0.md: setup path audit report — 9 INSTALL.md stale items, 6 dso-setup.sh gap categories (dso-bxd0)
- skills/preplanning/SKILL.md: Phase 4 tk create now passes --description flag for story body population (dso-472x)
- scripts/read-config.sh: WORKFLOW_CONFIG_FILE override for test isolation; adds checkpoint.commit_label, dso.plugin_root, version.file_path to known keys
- tests/hooks/test-merge-to-main-portability.sh: use WORKFLOW_CONFIG_FILE for config isolation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .tickets/dso-472x.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
id: dso-472x
3
-
status: open
3
+
status: in_progress
4
4
deps: []
5
5
links: []
6
6
created: 2026-03-18T04:41:08Z
@@ -15,5 +15,8 @@ During Phase 4 (Create Stories), the preplanning skill instructs the agent to ru
15
15
16
16
## Acceptance Criteria
17
17
18
-
preplanning Phase 4 passes the done definition and user story body to tk create (via --description and/or --acceptance) so stories are complete at creation time
18
+
-[ ]`skills/preplanning/SKILL.md` Phase 4 Create Stories step includes `--description` and/or `--acceptance` flags on the `tk create` call
**If at any point you lack high confidence in your understanding of the existing project setup — e.g., you cannot determine whether a config pattern is intentional, whether a script step is still needed, or what the expected post-plugin-transition behavior should be — stop and ask the user before proceeding. Err on the side of guidance over assumption. This is a setup audit; mischaracterizing the current state will propagate errors into all downstream stories.**
1.**`/dso:init` referenced as the verification step ("Verify Installation" section)** — The epic's goal is a new `/dso:project-setup` skill as the primary entry point. The existing `skills/init/SKILL.md` is a legacy skill that writes `workflow-config.yaml` (YAML format), not the flat KEY=VALUE `workflow-config.conf` that the current codebase uses everywhere. Referencing `/dso:init` for verification is stale on two levels: (a) the canonical config format is now `.conf`, not `.yaml`, and (b) the intended post-epic entry point is `/dso:project-setup`, which does not yet exist.
45
+
46
+
2.**`skills/init/SKILL.md` writes `workflow-config.yaml`** — The init skill itself is stale. It proposes writing a YAML file with a `version: 1` / `commands:` structure, but the live system uses `workflow-config.conf` (flat KEY=VALUE). The INSTALL.md "Optional: workflow-config.conf" section correctly describes the current format. The init skill and the INSTALL.md verify step are mismatched with each other and with the current system.
47
+
48
+
3.**"Verify Installation" expected output is aspirational** — INSTALL.md says `/dso:init` will print "a summary table of detected commands and a confirmation that hooks are registered." The actual `skills/init/SKILL.md` does not perform a hook registration check; it only detects the stack and writes config. The "hooks are registered" output described in INSTALL.md does not reflect current behavior.
49
+
50
+
4.**validate-work configuration section belongs in a config reference, not an install guide** — The "validate-work Configuration" section (lines 129-230) is detailed reference documentation for staging keys and the `.sh` vs `.md` dispatch mechanism. This content is misplaced in an installation guide. Post-epic, it should move to the `workflow-config.conf` key reference doc (Story D scope).
51
+
52
+
5.**workflow-config.conf copy command uses a literal placeholder path** — The instruction `cp /path/to/digital-service-orchestra/docs/workflow-config.example.conf workflow-config.conf` requires users to know the actual plugin installation directory. Post-plugin-transition, the correct path is resolved via `CLAUDE_PLUGIN_ROOT` or the dso shim. The command should use `$CLAUDE_PLUGIN_ROOT/docs/workflow-config.example.conf`.
53
+
54
+
6.**Git Hooks section omits `pre-commit install`** — The section tells users to copy `examples/pre-commit-config.example.yaml` and `examples/ci.example.yml` but says nothing about running `pre-commit install` (or `pre-commit install --hook-type pre-push`) to actually activate the hooks. Copying the config file without installing does not register the hooks.
55
+
56
+
7.**Option A install command (`claude plugin install`) is unverified** — `claude plugin install github:navapbc/digital-service-orchestra` — this command fails with "Plugin not found in any configured marketplace" when tested. Option A as documented is either aspirational or requires marketplace registration that has not happened. It should be marked as aspirational/pending or removed.
57
+
58
+
8.**`scripts/dso-setup.sh` is entirely absent from INSTALL.md** — The script is the mechanical engine for setup per the epic scope, but INSTALL.md does not reference it. The Path Resolution section describes manual `CLAUDE_PLUGIN_ROOT` configuration in `settings.json`, but the actual setup mechanism (shim install + `dso.plugin_root` in `workflow-config.conf`) is invisible in the docs.
59
+
60
+
9.**`dso.plugin_root` config key not mentioned** — INSTALL.md describes only the `env.CLAUDE_PLUGIN_ROOT` approach in `settings.json` for path resolution. The `dso.plugin_root` key in `workflow-config.conf` (which is what `dso-setup.sh` actually writes) is never mentioned.
61
+
62
+
---
63
+
64
+
## dso-setup.sh Gaps
65
+
66
+
The current script does exactly two things:
67
+
1. Copies `templates/host-project/dso` shim to `TARGET_REPO/.claude/scripts/dso`
68
+
2. Writes or updates `dso.plugin_root=<PLUGIN_ROOT>` in `workflow-config.conf`
69
+
70
+
### Missing: Prerequisite Checks
71
+
- No check for Claude Code CLI presence or version
72
+
- No check for bash >= 4.0 (critical on macOS where /bin/bash is 3.2)
73
+
- No check for GNU coreutils (`gtimeout`/`gstat`) — required by workflow scripts; macOS ships BSD coreutils only
74
+
- No check for `pre-commit` tool being installed
75
+
- No check for Python 3 (used by hooks for JSON parsing)
76
+
- No check for `git` (assumed present, no explicit guard)
77
+
78
+
### Missing: Pre-commit Hook Installation
79
+
- Does not run `pre-commit install` to activate commit hooks
80
+
- Does not run `pre-commit install --hook-type pre-push` to activate push hooks
81
+
- The pre-commit-config.example.yaml in examples/ includes both pre-commit and pre-push stage hooks, so both install calls are required
82
+
83
+
### Missing: Example Config Copying
84
+
- Does not copy `examples/pre-commit-config.example.yaml` to `.pre-commit-config.yaml` (with guard: skip if target exists)
85
+
- Does not copy `examples/ci.example.yml` to `.github/workflows/ci.yml` (with guard: skip if target exists)
86
+
- Does not scaffold `workflow-config.conf` from `docs/workflow-config.example.conf` — only appends one key (`dso.plugin_root`)
87
+
- Does not copy any of the templates: `templates/CLAUDE.md.template`, `templates/KNOWN-ISSUES.example.md`, `templates/DOCUMENTATION-GUIDE.example.md`
88
+
89
+
### Missing: Optional Dependency Detection and Prompts
90
+
- No detection or install guidance for `acli` (optional, used by some skills)
91
+
- No detection or install guidance for PyYAML (optional, used by legacy YAML config path)
92
+
- Epic scope requires: detect both, offer install instructions, never block setup if absent
93
+
94
+
### Missing: Environment Variable Guidance
95
+
- No output about `CLAUDE_PLUGIN_ROOT`, `JIRA_URL`, `JIRA_USER`, `JIRA_API_TOKEN`, `ARTIFACTS_DIR`, or other env vars used by hooks and skills
96
+
- No guidance on where to set these (shell profile, `.env`, Claude Code settings.json)
97
+
98
+
### Missing: Cross-platform Handling
99
+
- No detection of macOS vs Linux vs WSL
100
+
- No guidance on platform-specific prerequisites (e.g., `brew install coreutils` on macOS)
101
+
-`sed -i.bak` usage is BSD/GNU compatible — this one line is fine
102
+
103
+
### Missing: Success Output
104
+
- Script exits silently with no user-facing confirmation of what was installed
105
+
- No "next steps" message pointing to `/dso:project-setup` or to editing `workflow-config.conf`
106
+
107
+
### Note on Idempotency
108
+
- The `dso.plugin_root` update uses a grep+sed guard — idempotent, correct
109
+
- The shim copy is a silent overwrite — acceptable behavior for a setup script but should be documented
Copy file name to clipboardExpand all lines: .tickets/dso-xtcg.md
+10-1Lines changed: 10 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
id: dso-xtcg
3
-
status: open
3
+
status: in_progress
4
4
deps: []
5
5
links: []
6
6
created: 2026-03-18T04:37:01Z
@@ -20,6 +20,15 @@ As an engineer configuring DSO, I want every `workflow-config.conf` key and envi
20
20
- Scope explicitly includes: CLAUDE_PLUGIN_ROOT, DSO_ROOT, and any vars consumed outside of hook scripts
21
21
- Reference documentation committed to `docs/` (file path TBD based on audit in Story A)
22
22
23
+
## Acceptance Criteria
24
+
25
+
-[ ] Reference documentation file committed to `docs/` covering all `workflow-config.conf` keys with description, accepted values, default, and which component uses each
26
+
Verify: test -f /Users/joeoakhart/digital-service-orchestra/docs/CONFIGURATION-REFERENCE.md || ls /Users/joeoakhart/digital-service-orchestra/docs/*config* 2>/dev/null | grep -q "."
27
+
-[ ] Reference documentation covers all environment variables used by hooks, scripts, and skills including CLAUDE_PLUGIN_ROOT and DSO_ROOT
**If at any point you lack high confidence in your understanding of the existing project setup — e.g., you are unsure whether a config key is still active, what a variable's expected values are, or which components consume a given env var — stop and ask the user before documenting. Err on the side of guidance over assumption. Incorrect reference documentation is worse than missing documentation: it actively misleads engineers during setup.**
0 commit comments