compass-st 1.1.2

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 (118) hide show
  1. package/README.md +105 -0
  2. package/VERSION +1 -0
  3. package/bin/install +174 -0
  4. package/bootstrap.sh +95 -0
  5. package/cli/Cargo.lock +270 -0
  6. package/cli/Cargo.toml +24 -0
  7. package/cli/src/cmd/context.rs +59 -0
  8. package/cli/src/cmd/dag.rs +133 -0
  9. package/cli/src/cmd/git.rs +148 -0
  10. package/cli/src/cmd/hook.rs +51 -0
  11. package/cli/src/cmd/index.rs +363 -0
  12. package/cli/src/cmd/manifest.rs +34 -0
  13. package/cli/src/cmd/memory.rs +680 -0
  14. package/cli/src/cmd/migrate.rs +790 -0
  15. package/cli/src/cmd/mod.rs +14 -0
  16. package/cli/src/cmd/progress.rs +107 -0
  17. package/cli/src/cmd/project.rs +1700 -0
  18. package/cli/src/cmd/session.rs +64 -0
  19. package/cli/src/cmd/state.rs +317 -0
  20. package/cli/src/cmd/validate/mod.rs +506 -0
  21. package/cli/src/cmd/validate/prd.rs +472 -0
  22. package/cli/src/cmd/version.rs +89 -0
  23. package/cli/src/helpers.rs +40 -0
  24. package/cli/src/main.rs +75 -0
  25. package/cli/tests/fixtures/plan_empty_pointers.json +60 -0
  26. package/cli/tests/fixtures/plan_missing_pointers.json +59 -0
  27. package/cli/tests/fixtures/plan_too_many_pointers.json +92 -0
  28. package/cli/tests/fixtures/plan_v1_valid.json +64 -0
  29. package/cli/tests/fixtures/prd_bad_flow_bullet.md +37 -0
  30. package/cli/tests/fixtures/prd_bad_flow_prose.md +33 -0
  31. package/cli/tests/fixtures/prd_good_flow.md +41 -0
  32. package/cli/tests/fixtures/prd_xref_dangling.md +38 -0
  33. package/cli/tests/fixtures/prd_xref_valid.md +53 -0
  34. package/cli/tests/fixtures/projects/proj_a/.compass/.state/config.json +12 -0
  35. package/cli/tests/fixtures/projects/proj_b/.compass/.state/config.json +12 -0
  36. package/cli/tests/fixtures/projects/proj_c/.compass/.state/config.json +12 -0
  37. package/cli/tests/fixtures/registry/all_dead.json +18 -0
  38. package/cli/tests/fixtures/registry/corrupt.json +1 -0
  39. package/cli/tests/fixtures/registry/empty.json +1 -0
  40. package/cli/tests/fixtures/registry/last_active_dead.json +24 -0
  41. package/cli/tests/fixtures/registry/multi_alive.json +24 -0
  42. package/cli/tests/fixtures/registry/one_alive.json +12 -0
  43. package/cli/tests/fixtures/v0_project/.compass/.state/config.json +5 -0
  44. package/cli/tests/fixtures/v0_project/.compass/.state/sessions/onboarding-redesign/plan.json +29 -0
  45. package/cli/tests/fixtures/v0_project/.compass/.state/sessions/sample-feature/context.json +11 -0
  46. package/cli/tests/fixtures/v0_project/.compass/.state/sessions/sample-feature/plan.json +49 -0
  47. package/core/colleagues/base-rules.md +112 -0
  48. package/core/colleagues/manifest.json +85 -0
  49. package/core/colleagues/market-analyst.md +50 -0
  50. package/core/colleagues/prioritizer.md +53 -0
  51. package/core/colleagues/researcher.md +54 -0
  52. package/core/colleagues/reviewer.md +55 -0
  53. package/core/colleagues/stakeholder-comm.md +59 -0
  54. package/core/colleagues/story-breaker.md +57 -0
  55. package/core/colleagues/ux-reviewer.md +54 -0
  56. package/core/colleagues/writer.md +55 -0
  57. package/core/commands/compass/brief.md +28 -0
  58. package/core/commands/compass/check.md +27 -0
  59. package/core/commands/compass/epic.md +32 -0
  60. package/core/commands/compass/feedback.md +32 -0
  61. package/core/commands/compass/help.md +24 -0
  62. package/core/commands/compass/ideate.md +32 -0
  63. package/core/commands/compass/init.md +30 -0
  64. package/core/commands/compass/plan.md +27 -0
  65. package/core/commands/compass/prd.md +39 -0
  66. package/core/commands/compass/prioritize.md +36 -0
  67. package/core/commands/compass/prototype.md +28 -0
  68. package/core/commands/compass/release.md +32 -0
  69. package/core/commands/compass/research.md +31 -0
  70. package/core/commands/compass/roadmap.md +32 -0
  71. package/core/commands/compass/run.md +28 -0
  72. package/core/commands/compass/setup.md +32 -0
  73. package/core/commands/compass/sprint.md +32 -0
  74. package/core/commands/compass/status.md +32 -0
  75. package/core/commands/compass/story.md +37 -0
  76. package/core/commands/compass/undo.md +33 -0
  77. package/core/commands/compass/update.md +29 -0
  78. package/core/hooks/context-monitor.sh +5 -0
  79. package/core/hooks/manifest-tracker.sh +62 -0
  80. package/core/hooks/statusline.sh +12 -0
  81. package/core/hooks/update-checker.sh +24 -0
  82. package/core/integrations/confluence.md +267 -0
  83. package/core/integrations/figma.md +277 -0
  84. package/core/integrations/jira.md +436 -0
  85. package/core/integrations/vercel.md +170 -0
  86. package/core/manifest.json +172 -0
  87. package/core/shared/SCHEMAS-v1.md +404 -0
  88. package/core/shared/progress.md +145 -0
  89. package/core/shared/project-scan.md +293 -0
  90. package/core/shared/resolve-project.md +136 -0
  91. package/core/shared/ux-rules.md +52 -0
  92. package/core/shared/version-backup.md +38 -0
  93. package/core/templates/prd-template.md +145 -0
  94. package/core/templates/story-template.md +99 -0
  95. package/core/workflows/brief.md +184 -0
  96. package/core/workflows/check.md +436 -0
  97. package/core/workflows/epic.md +177 -0
  98. package/core/workflows/feedback.md +164 -0
  99. package/core/workflows/help.md +79 -0
  100. package/core/workflows/ideate.md +320 -0
  101. package/core/workflows/init.md +524 -0
  102. package/core/workflows/migrate.md +136 -0
  103. package/core/workflows/plan.md +320 -0
  104. package/core/workflows/prd.md +632 -0
  105. package/core/workflows/prioritize.md +301 -0
  106. package/core/workflows/project.md +177 -0
  107. package/core/workflows/prototype.md +174 -0
  108. package/core/workflows/release.md +179 -0
  109. package/core/workflows/research.md +613 -0
  110. package/core/workflows/roadmap.md +152 -0
  111. package/core/workflows/run.md +367 -0
  112. package/core/workflows/setup.md +294 -0
  113. package/core/workflows/sprint.md +187 -0
  114. package/core/workflows/status.md +185 -0
  115. package/core/workflows/story.md +477 -0
  116. package/core/workflows/undo.md +42 -0
  117. package/core/workflows/update.md +127 -0
  118. package/package.json +37 -0
@@ -0,0 +1,179 @@
1
+ # Workflow: compass:release
2
+
3
+ You are the release documenter. Mission: generate release notes from completed stories, epics, and changelogs.
4
+
5
+ **Principles:** User-facing language — no internal jargon. Group by feature area. Highlight breaking changes. Include migration notes if needed. Every item in release notes must trace back to a completed story or epic.
6
+
7
+ **Purpose**: Produce polished release notes from completed work — ready for users, stakeholders, and public changelogs.
8
+
9
+ **Output**: `release-notes/{version}-{date}.md`
10
+
11
+ **When to use**:
12
+ - A sprint or milestone is complete and you need to communicate what shipped
13
+ - Leadership needs a summary of what went out in a release
14
+ - You're preparing a public changelog or app store update notes
15
+
16
+ ---
17
+
18
+ Apply the UX rules from `core/shared/ux-rules.md`.
19
+
20
+ ---
21
+
22
+ ## Step 0 — Resolve active project
23
+
24
+ Apply the shared snippet from `core/shared/resolve-project.md`. It sets up `$PROJECT_ROOT`, `$CONFIG`, and `$PROJECT_NAME` for downstream steps and prints the "Using: <name>" banner.
25
+
26
+ From `$CONFIG`, extract the required fields:
27
+ - `lang`, `spec_lang`, `mode`, `prefix`, `output_paths`, `naming`
28
+
29
+ **Error handling**:
30
+ - If `config.json` missing or corrupt → tell user to run `/compass:init`. Stop.
31
+ - If valid but missing required fields → list them, ask to run `/compass:init`. Stop.
32
+
33
+ **Language enforcement**: ALL chat text in `lang`. Artifact in `spec_lang`.
34
+
35
+ Extract `interaction_level` from config (default: "standard"):
36
+ - `quick`: auto-scan all done stories since last release tag, one review step before saving.
37
+ - `standard`: ask version, date, audience, then generate.
38
+ - `detailed`: review each story before including, allow PO to edit the user-facing description per item.
39
+
40
+ ---
41
+
42
+ ## Step 0b — Project awareness check
43
+
44
+ Apply the shared project-scan module from `core/shared/project-scan.md`.
45
+ Pass: keywords=$ARGUMENTS, type="research"
46
+
47
+ Scan for: completed stories (`status: done`), completed epics, any existing `release-notes/` files to determine the last release version.
48
+
49
+ ---
50
+
51
+ ## Step 1 — Scan completed work
52
+
53
+ 1. Glob `epics/*/user-stories/*.md` (Silver Tiger) or `.compass/Stories/*.md` (standalone).
54
+ 2. Filter stories with `status: done`.
55
+ 3. Check `release-notes/` folder for the most recent release file — read its `version` frontmatter to determine what was already documented.
56
+ 4. Identify stories completed AFTER the last release (by `created` or `updated` date in frontmatter).
57
+ 5. Group done stories by their parent epic.
58
+ 6. Show the count: "Found X completed stories across Y epics since last release (vZ.Z.Z)."
59
+
60
+ ---
61
+
62
+ ## Step 2 — Ask PO for release metadata
63
+
64
+ Use AskUserQuestion for version number:
65
+
66
+ ```json
67
+ {"questions": [{"question": "What is the version number for this release?\n(Tiếng Việt: Số phiên bản cho lần phát hành này là gì?)", "header": "Version number", "multiSelect": false, "options": [{"label": "Patch (e.g. 1.0.1 → 1.0.2)", "description": "Bug fixes only, no new features / Chỉ sửa lỗi, không tính năng mới"}, {"label": "Minor (e.g. 1.0.0 → 1.1.0)", "description": "New features, backward compatible / Tính năng mới, tương thích ngược"}, {"label": "Major (e.g. 1.0.0 → 2.0.0)", "description": "Breaking changes or major new product / Thay đổi breaking hoặc sản phẩm mới lớn"}, {"label": "I'll specify the exact version", "description": "Type the full version string / Nhập chuỗi phiên bản đầy đủ"}]}]}
68
+ ```
69
+
70
+ Use AskUserQuestion for target audience:
71
+
72
+ ```json
73
+ {"questions": [{"question": "Who is the primary audience for these release notes?\n(Tiếng Việt: Đối tượng chính của release notes này là ai?)", "header": "Target audience", "multiSelect": false, "options": [{"label": "End users (non-technical)", "description": "Plain language, benefit-focused / Ngôn ngữ đơn giản, tập trung vào lợi ích"}, {"label": "Developers / technical users", "description": "Can include API changes, config updates / Có thể bao gồm thay đổi API, cập nhật cấu hình"}, {"label": "Internal stakeholders", "description": "Business impact, metrics context / Tác động kinh doanh, bối cảnh số liệu"}, {"label": "Public changelog (all audiences)", "description": "Balanced — clear for all / Cân bằng — rõ ràng cho mọi đối tượng"}]}]}
74
+ ```
75
+
76
+ Use AskUserQuestion for breaking changes:
77
+
78
+ ```json
79
+ {"questions": [{"question": "Does this release include any breaking changes?\n(Tiếng Việt: Lần phát hành này có thay đổi breaking không?)", "header": "Breaking changes", "multiSelect": false, "options": [{"label": "No breaking changes", "description": "Safe to upgrade without migration / An toàn khi nâng cấp không cần migration"}, {"label": "Yes — I'll describe them", "description": "I'll tell you what changed and what action users need / Tôi sẽ mô tả thay đổi và hành động cần thiết"}, {"label": "Yes — deprecations only (not yet breaking)", "description": "Warn users now, breaking in next major / Cảnh báo người dùng, breaking ở major tiếp theo"}]}]}
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Step 3 — Generate release notes
85
+
86
+ Translate story titles into user-facing language:
87
+ - Remove jargon: "STORY-007: Implement JWT refresh token rotation" → "Your login session now stays active longer without requiring you to sign in again."
88
+ - Focus on the user benefit, not the implementation.
89
+ - Group by epic / feature area.
90
+
91
+ ```markdown
92
+ ---
93
+ version: <version>
94
+ release-date: <YYYY-MM-DD>
95
+ audience: <end-users | developers | internal | public>
96
+ breaking-changes: <yes | no>
97
+ stories-included: <N>
98
+ epics-included: <M>
99
+ po: <from config>
100
+ ---
101
+
102
+ # Release Notes — v<version>
103
+
104
+ **Release date**: <YYYY-MM-DD>
105
+
106
+ ## What's New
107
+ <Features from completed stories — user-facing language, grouped by feature area>
108
+
109
+ ### <Feature Area 1 (Epic name)>
110
+ - **<Feature name>**: <One sentence description of what users can now do>
111
+ - **<Feature name>**: ...
112
+
113
+ ### <Feature Area 2>
114
+ - ...
115
+
116
+ ## Improvements
117
+ <Smaller enhancements and UX polish — brief bullets>
118
+ - <What improved and why users will notice>
119
+
120
+ ## Bug Fixes
121
+ <Bugs resolved — describe the symptom that was fixed, not the code change>
122
+ - Fixed: <symptom users experienced> — now <expected behavior>
123
+
124
+ ## Breaking Changes
125
+ ⚠️ **Action required** before upgrading:
126
+
127
+ ### <Breaking change title>
128
+ **What changed**: <What no longer works the same way>
129
+ **Who is affected**: <Which users or integrations are impacted>
130
+ **Action required**: <Exact steps to migrate>
131
+ **Deadline**: <If deprecation, when it becomes fully breaking>
132
+
133
+ ## Migration Guide
134
+ <Only include if breaking changes exist>
135
+
136
+ ### Step 1: <Action>
137
+ <Instructions>
138
+
139
+ ### Step 2: ...
140
+
141
+ ## Coming Next
142
+ <Optional — 2-3 items teased for the next release, tied to planned epics>
143
+ - <Item> (planned for v<next version>)
144
+
145
+ ---
146
+ *Release prepared by: <po from config>*
147
+ *Stories shipped: <N> | Epics closed: <M>*
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Step 4 — Review and save
153
+
154
+ Use AskUserQuestion:
155
+
156
+ ```json
157
+ {"questions": [{"question": "Release notes look good?\n(Tiếng Việt: Release notes trông ổn không?)", "header": "Review release notes", "multiSelect": false, "options": [{"label": "Save the release notes", "description": "Write the file now / Lưu ngay"}, {"label": "Edit a section", "description": "I want to change the wording of a section / Tôi muốn chỉnh sửa diễn đạt của một phần"}, {"label": "Add a missing item", "description": "There's a completed item I want to include / Có một hạng mục đã hoàn thành tôi muốn thêm vào"}]}]}
158
+ ```
159
+
160
+ Save to `release-notes/{version}-{date}.md`. Create the folder if it doesn't exist.
161
+
162
+ ```bash
163
+ compass-cli index add "release-notes/{version}-{date}.md" "research" 2>/dev/null || true
164
+ ```
165
+
166
+ ## Save session
167
+
168
+ `$PROJECT_ROOT/.compass/.state/sessions/<timestamp>-release-{version}/transcript.md`
169
+
170
+ ## Edge cases
171
+
172
+ - **No completed stories found**: warn the user — do not generate empty release notes. Ask if they want to change the status filter.
173
+ - **Stories completed but no epic linked**: group them under "General Improvements" in the release notes.
174
+ - **Breaking change but no migration guide provided**: refuse to save until PO provides migration steps — this is a user safety issue.
175
+ - **PO wants to exclude a completed story from release notes**: mark it `release: exclude` in frontmatter, skip it silently.
176
+ - **Multiple epics closed in same release**: order feature areas by user impact (P0 epics first).
177
+ - **`spec_lang` is bilingual**: generate `{version}-{date}-en.md` and `{version}-{date}-vi.md`.
178
+ - **First release (no prior release-notes/ folder)**: create the folder and treat all done stories as new — note "Initial release" in the header.
179
+ - **App store format needed**: if audience = "end users", offer to also generate a 500-character app store update description as a bonus block at the end of the file.