openspecpm 0.1.0-alpha.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 +86 -0
- package/LICENSE +21 -0
- package/README.md +352 -0
- package/cli/bin/openspecpm.js +198 -0
- package/cli/src/adapters/azure.js +230 -0
- package/cli/src/adapters/base.js +86 -0
- package/cli/src/adapters/github.js +224 -0
- package/cli/src/adapters/gitlab.js +170 -0
- package/cli/src/adapters/index.js +54 -0
- package/cli/src/adapters/jira.js +228 -0
- package/cli/src/adapters/linear.js +261 -0
- package/cli/src/audit.js +78 -0
- package/cli/src/bdd/linter.js +183 -0
- package/cli/src/bdd/templates.js +172 -0
- package/cli/src/commands/assign.js +78 -0
- package/cli/src/commands/blocked.js +17 -0
- package/cli/src/commands/bug-report.js +78 -0
- package/cli/src/commands/bulk.js +67 -0
- package/cli/src/commands/comment.js +83 -0
- package/cli/src/commands/decompose.js +106 -0
- package/cli/src/commands/doctor.js +61 -0
- package/cli/src/commands/fan-out.js +79 -0
- package/cli/src/commands/help.js +69 -0
- package/cli/src/commands/init.js +111 -0
- package/cli/src/commands/next.js +18 -0
- package/cli/src/commands/propose.js +67 -0
- package/cli/src/commands/reconcile.js +74 -0
- package/cli/src/commands/search.js +52 -0
- package/cli/src/commands/ship.js +79 -0
- package/cli/src/commands/standup.js +42 -0
- package/cli/src/commands/status.js +29 -0
- package/cli/src/commands/sync.js +128 -0
- package/cli/src/commands/validate.js +79 -0
- package/cli/src/commands/watch.js +67 -0
- package/cli/src/config.js +43 -0
- package/cli/src/frontmatter.js +22 -0
- package/cli/src/http.js +92 -0
- package/cli/src/install-hints.js +44 -0
- package/cli/src/notify.js +56 -0
- package/cli/src/openspec-bridge.js +64 -0
- package/cli/src/ratelimit.js +50 -0
- package/cli/src/telemetry.js +45 -0
- package/cli/src/tracking.js +197 -0
- package/package.json +60 -0
- package/skill/openspecpm/SKILL.md +74 -0
- package/skill/openspecpm/references/conventions.md +105 -0
- package/skill/openspecpm/references/execute.md +62 -0
- package/skill/openspecpm/references/plan.md +47 -0
- package/skill/openspecpm/references/structure.md +52 -0
- package/skill/openspecpm/references/sync.md +56 -0
- package/skill/openspecpm/references/track.md +55 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Track — Status, standup, next, blocked, ship
|
|
2
|
+
|
|
3
|
+
**When to use this:** The user asks "what's our status", "give me a standup", "what should I work on next", "what's blocked", "ship the X feature", or any other tracking-flavored question.
|
|
4
|
+
|
|
5
|
+
## Outcome
|
|
6
|
+
|
|
7
|
+
A concise, current snapshot of work in flight — synthesized from local OpenSpec changes + remote work-item state — presented back to the user.
|
|
8
|
+
|
|
9
|
+
## Script-first rule
|
|
10
|
+
|
|
11
|
+
Tracking commands are deterministic. Run the CLI; do not handcraft these answers from memory.
|
|
12
|
+
|
|
13
|
+
| What the user wants | Command |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Project status | `openspecpm status` |
|
|
16
|
+
| Standup digest | `openspecpm standup` (or `--since 12h` / `--since 2d`) |
|
|
17
|
+
| What's ready to start | `openspecpm next` |
|
|
18
|
+
| What's blocked | `openspecpm blocked` |
|
|
19
|
+
| Close + archive a feature | `openspecpm ship <feature>` |
|
|
20
|
+
|
|
21
|
+
## How tracking reads state
|
|
22
|
+
|
|
23
|
+
- **Local source of truth** for proposals, BDD scenarios, task definitions, and progress narrative: `openspec/changes/<feature>/`.
|
|
24
|
+
- **Remote source of truth** for status field, assignee, sprint/iteration, and visibility to other stakeholders: the PM tool.
|
|
25
|
+
- **Idempotent sync** (per `sync.md`): re-running `sync` reconciles drift. Tracking commands do *not* automatically reconcile — they report local state. If a remote close hasn't been reflected locally, the user sees stale data. Suggest a re-sync if the user reports surprise.
|
|
26
|
+
|
|
27
|
+
## What each command does
|
|
28
|
+
|
|
29
|
+
### `status`
|
|
30
|
+
Lists every OpenSpec change with a per-change breakdown of task `sync_state` (`pending` / `created` / `failed` / `done`). Fast, local-only, suitable for "what are we working on right now" answers.
|
|
31
|
+
|
|
32
|
+
### `standup`
|
|
33
|
+
Walks `openspec/changes/<feature>/updates/<task>/progress.md` files modified within the window (default 24h) and prints the first ~240 chars of each. Use for daily/weekly written standups.
|
|
34
|
+
|
|
35
|
+
### `next`
|
|
36
|
+
Returns the set of tasks whose `depends_on` are all satisfied (each named dep either done or absent from the tree). Caller picks the priority. Bias toward tasks already flagged `parallel: true` when multiple agents are available.
|
|
37
|
+
|
|
38
|
+
### `blocked`
|
|
39
|
+
Inverse of `next`. Returns tasks that have at least one unmet dep, with the dep name and reason (`dep-open`, `dep-failed`, `not-found`). `not-found` flags a dependency typo or a deleted task — escalate.
|
|
40
|
+
|
|
41
|
+
### `ship`
|
|
42
|
+
Two-step close + archive:
|
|
43
|
+
|
|
44
|
+
1. Confirm with the user (suppress with `-y`).
|
|
45
|
+
2. Iterate every task with `sync_state: created` and call `adapter.closeWorkItem(ref, "Shipped via openspecpm ship <feature>")`.
|
|
46
|
+
3. Close the epic via the same call.
|
|
47
|
+
4. Shell out to `openspec archive <feature>` so the change moves to `openspec/archive/<date>-<feature>/`. Skippable with `--skip-archive` if you want to keep authoring locally for a follow-up.
|
|
48
|
+
|
|
49
|
+
If any close fails, ship continues and reports failures inline — re-running ship is safe (closing a closed item is a no-op in every supported backend).
|
|
50
|
+
|
|
51
|
+
## What to avoid
|
|
52
|
+
|
|
53
|
+
- Don't paraphrase status from memory — run the CLI, the state changes constantly.
|
|
54
|
+
- Don't `ship` mid-flight just because every task happens to be `created`. Ship implies *behavior is verified*; closing the work items is a side-effect.
|
|
55
|
+
- Don't mass-close work items by editing tasks.md frontmatter — that desynchronizes local from remote. Use `ship` or `adapter.closeWorkItem` so the broadcast happens.
|