@brainervirus/workit-opencode 0.8.9 → 0.8.10

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/README.md CHANGED
@@ -26,13 +26,13 @@ Requirements: OpenCode ≥ 1.15.0, Node ≥ 22 (the published plugin is a self-c
26
26
  ## What it provides
27
27
 
28
28
  - **12 `wk-*` commands/skills** (`wk-init`, `wk-status`, `wk-verify`, `wk-commit`, `wk-pr`, `wk-changelog`, `wk-release-notes`, `wk-docs-refresh`, `wk-handoff`, `wk-implement`, `wk-meetings`, `wk-issue-update`).
29
- - **Native plugin tools** (`workflow_*`) — branch setup, PR create/context, docs validate/promote, YouTrack post/log/time, templates, rules, presentation, doctor, and handoff.
29
+ - **Native plugin tools** (`workit_*`) — branch setup, PR create/context, docs validate/promote, YouTrack post/log/time, templates, rules, presentation, doctor, and handoff.
30
30
  - **Per-turn enforcement rails** — contract reminder, doc rendering, self-review gates, config guard, issue rails, and post-hoc detectors.
31
31
 
32
32
  ## Host-native behavior
33
33
 
34
- - **Approvals** — flow gates (`workflow_spec_approve` / `workflow_plan_approve` / `workflow_plan_menu`) record native `question` receipts; the self-review validation runs automatically during the transition. Approvals bind to the document's exact SHA-256 digest: editing an approved spec/plan invalidates the approval and forces a fresh reapproval.
35
- - **Lifecycle** — `workflow_plan_pause` / `workflow_plan_resume` / `workflow_plan_complete` move a plan through `pending`/`active`/`paused`/`completed`, each gated by a one-use native-question receipt; completion requires a complete SDD ledger and passing repository verification.
34
+ - **Approvals** — flow gates (`workit_spec_approve` / `workit_plan_approve` / `workit_plan_menu`) record native `question` receipts; the self-review validation runs automatically during the transition. Approvals bind to the document's exact SHA-256 digest: editing an approved spec/plan invalidates the approval and forces a fresh reapproval.
35
+ - **Lifecycle** — `workit_plan_pause` / `workit_plan_resume` / `workit_plan_complete` move a plan through `pending`/`active`/`paused`/`completed`, each gated by a one-use native-question receipt; completion requires a complete SDD ledger and passing repository verification.
36
36
  - **Delegation** — approved plans execute through subagent-driven task delegation (native `task`); while a subagent-driven plan is active, coordinator product edits are intercepted. Receipts are purpose-bound: each gate consumes the newest fresh receipt for exactly its purpose, so unrelated questions never authorize or mask a gate. Delegated authority is direct-child-only — authorized workers receive compact worker-only context, while mismatched session lineage is denied (`delegation_lineage_denied`).
37
37
  - **Commit** — `wk-commit` previews a Conventional Commit and confirms through a native `question`.
38
38
  - **Handoff** — `wk-handoff` seeds and spawns a native OpenCode continuation session; a destination session presents a four-choice menu (never the originating Handoff option) and carries the handoff-destination marker.
@@ -6,10 +6,10 @@ description: Preview and apply a Keep a Changelog update.
6
6
  # Changelog
7
7
 
8
8
  1. Load this skill explicitly through OpenCode's `skill` tool.
9
- 2. Call the read-only `workflow_changelog_context` context tool; its result is ground truth.
9
+ 2. Call the read-only `workit_changelog_context` context tool; its result is ground truth.
10
10
  3. Draft the exact insertion preview, including target heading, categories, and bullets.
11
11
  4. Use native `question` with concise choices and allow a custom answer before changing the file.
12
- 5. Call `workflow_changelog_apply` only after approval with `confirmed: true`.
12
+ 5. Call `workit_changelog_apply` only after approval with `confirmed: true`.
13
13
  6. Report the structured success, failure stage, or partial result; never infer success.
14
14
 
15
15
  Target `## [Unreleased]` unless the user requests a release. Use only Added, Changed, Deprecated, Removed, Fixed, or Security; group user-visible behavior and skip internal-only work. The apply tool must merge into existing category headings, preserve all unrelated lines, and skip duplicate bullets. If normalization is needed, include it in the same preview and approval. Do not hand-edit the changelog, version packages, tag, or commit. `todowrite` and `task` are unnecessary here.
@@ -7,10 +7,10 @@ disable-model-invocation: true
7
7
  # Commit
8
8
 
9
9
  1. Load this skill explicitly through OpenCode's `skill` tool.
10
- 2. Call the read-only `workflow_git_context` context tool with any selected paths; its result is ground truth.
10
+ 2. Call the read-only `workit_git_context` context tool with any selected paths; its result is ground truth.
11
11
  3. Draft the exact Conventional Commit message and the already-staged file set.
12
12
  4. Use native `question` with concise choices and allow a custom answer before committing.
13
- 5. Call `workflow_commit` only after approval with `confirmed: true` and the reviewed `message`.
13
+ 5. Call `workit_commit` only after approval with `confirmed: true` and the reviewed `message`.
14
14
  6. Report the structured success, failure stage, or partial result; never infer success.
15
15
 
16
- Never stage files automatically: `workflow_commit` commits the current index only. Stop for an empty index, partial staging ambiguity, unrelated staged files, secrets, protected branches, or failed hooks. Never push, bypass hooks, use `--no-verify`, or claim files were committed unless the result proves it. Keep related code, tests, and docs in one coherent commit; do not invent extra commit groups. `todowrite` and `task` are unnecessary here.
16
+ Never stage files automatically: `workit_commit` commits the current index only. Stop for an empty index, partial staging ambiguity, unrelated staged files, secrets, protected branches, or failed hooks. Never push, bypass hooks, use `--no-verify`, or claim files were committed unless the result proves it. Keep related code, tests, and docs in one coherent commit; do not invent extra commit groups. `todowrite` and `task` are unnecessary here.
@@ -6,10 +6,10 @@ description: Refresh stale repository documentation from structured change conte
6
6
  # Docs refresh
7
7
 
8
8
  1. Load this skill explicitly through OpenCode's `skill` tool.
9
- 2. Call the read-only `workflow_docs_context` context tool; its result is ground truth.
9
+ 2. Call the read-only `workit_docs_context` context tool; its result is ground truth.
10
10
  3. Draft the smallest factual documentation edit from structured facts.
11
11
  4. Use native `question` with concise choices and allow a custom answer only if the requested edit scope is ambiguous.
12
- 5. Apply approved edits with normal OpenCode file tools, then call `workflow_verify`.
12
+ 5. Apply approved edits with normal OpenCode file tools, then call `workit_verify`.
13
13
  6. Report the structured success, failure stage, or partial result; never infer success.
14
14
 
15
15
  Prefer README changes when stale, then directly related tracked documentation. Preserve tone and structure; do not invent features, commands, environment variables, screenshots, or install steps. Do not make stylistic rewrites, commit, or modify product code. Report verification exactly. Use `todowrite` only when multiple requested documents need tracking; `task` is unnecessary.
@@ -7,13 +7,13 @@ disable-model-invocation: true
7
7
  # Handoff
8
8
 
9
9
  1. Load this skill explicitly through OpenCode's `skill` tool.
10
- 2. Call the automatic `workflow_handoff_session` tool with the full user message as `message`; its result is ground truth.
10
+ 2. Call the automatic `workit_handoff_session` tool with the full user message as `message`; its result is ground truth.
11
11
  3. The tool resolves the tracked spec, plan, and SDD context and seeds the continuation session.
12
12
  4. This workflow needs no `question`: the explicit invocation is approval.
13
13
  5. Pass only `message`; the tool itself recognizes an exact `--stay` flag and otherwise selects the new session.
14
14
  6. Report the structured success, failure stage, or partial result; never infer success.
15
- 7. After any `workflow_handoff_session` result—success, partial, or failure—end the originating turn immediately after one status message. Never create todos, execute the plan inline, modify files, retry handoff, or call another tool.
16
- 8. A destination run that executes the plan must still end with `workflow_plan_complete` (or the CLI `workit flow complete`) once the SDD ledger is complete and repository verification passes, and never finish the run while the plan is still `active`.
15
+ 7. After any `workit_handoff_session` result—success, partial, or failure—end the originating turn immediately after one status message. Never create todos, execute the plan inline, modify files, retry handoff, or call another tool.
16
+ 8. A destination run that executes the plan must still end with `workit_plan_complete` (or the CLI `workit flow complete`) once the SDD ledger is complete and repository verification passes, and never finish the run while the plan is still `active`.
17
17
 
18
18
  Handoff titles continuation sessions `Workit: <slug>` (never `Continue <slug>`). OpenCode's native `Continue opencode -s <session-id>` epilogue is the valid manual recovery command when host selection is unavailable (`stage: "select"`): `selected: false` with a `sessionID` is a partial success — use `opencode -s <session-id>` to resume, not a Workit bug.
19
19
 
@@ -11,14 +11,14 @@ The parent agent is coordinator-only. It must not edit product code or perform d
11
11
  ## Native setup
12
12
 
13
13
  1. Load this skill explicitly through OpenCode's `skill` tool.
14
- 2. Call read-only `workflow_plan_tasks` and `workflow_sdd_context`; their structured results are ground truth.
15
- 3. Call `workflow_flow_status` with the plan path and hard-stop unless `spec.status === "approved"`, `plan.status === "approved"`, and `menu.presented === true`. If any gate is missing, run the required approval flow (`workflow_spec_approve`/`workflow_plan_approve` after the user's native-question approval, `workflow_plan_menu` after the post-plan menu) and re-check — never start tasks on a draft or unapproved plan.
14
+ 2. Call read-only `workit_plan_tasks` and `workit_sdd_context`; their structured results are ground truth.
15
+ 3. Call `workit_flow_status` with the plan path and hard-stop unless `spec.status === "approved"`, `plan.status === "approved"`, and `menu.presented === true`. If any gate is missing, run the required approval flow (`workit_spec_approve`/`workit_plan_approve` after the user's native-question approval, `workit_plan_menu` after the post-plan menu) and re-check — never start tasks on a draft or unapproved plan.
16
16
  4. Initialize native `todowrite` from returned tasks and mark ledger-completed task IDs completed.
17
- 5. Call `workflow_resolve_branch`, then show the current branch, target branch, and stash behavior before any branch checkout/setup mutation.
17
+ 5. Call `workit_resolve_branch`, then show the current branch, target branch, and stash behavior before any branch checkout/setup mutation.
18
18
  6. Always use native `question` before that mutation. For a clean tree, ask whether to proceed or cancel. For a dirty tree, add the stash choice and state what will be stashed; allow a custom answer.
19
- 7. Call `workflow_branch_setup` with `confirmed: true` only after approval; never use worktrees. Flow-tool confirmations are never agent-typed booleans and never caller-supplied evidence: the plugin records your native-`question` answer as a host-observed one-use receipt (`attested: true`, `callID`, `selectedLabel`, `recordedAt`) consumed by the approval/menu tools — no evidence argument exists. Delegated worker status comes from host session parentage (`parentID`), never a caller `role` field.
19
+ 7. Call `workit_branch_setup` with `confirmed: true` only after approval; never use worktrees. Flow-tool confirmations are never agent-typed booleans and never caller-supplied evidence: the plugin records your native-`question` answer as a host-observed one-use receipt (`attested: true`, `callID`, `selectedLabel`, `recordedAt`) consumed by the approval/menu tools — no evidence argument exists. Delegated worker status comes from host session parentage (`parentID`), never a caller `role` field.
20
20
  8. Report any setup failure stage or partial result; never infer success.
21
- 9. Fill specs/plans from the quality templates: `templates/spec-template.md` for specs, `templates/plan-template.md` for plans. After `workflow_docs_validate`, surface the returned `quality` findings: hard findings (missing required section, missing CA-XX) block task start unless the user explicitly waives them; warnings are advisory.
21
+ 9. Fill specs/plans from the quality templates: `templates/spec-template.md` for specs, `templates/plan-template.md` for plans. After `workit_docs_validate`, surface the returned `quality` findings: hard findings (missing required section, missing CA-XX) block task start unless the user explicitly waives them; warnings are advisory.
22
22
 
23
23
  Working state lives only in gitignored `docs/<slug>/sdd/` — never `.superpowers/sdd`, never an extra nested slug level. Load the package-neutral execution contract by name, not an installation-specific path.
24
24
 
@@ -27,21 +27,21 @@ Working state lives only in gitignored `docs/<slug>/sdd/` — never `.superpower
27
27
  For every plan task whose ID is absent from `completed_task_ids`:
28
28
 
29
29
  1. Mark it `in_progress` with `todowrite`.
30
- 2. Create its brief with `workflow_sdd_task_brief` using `confirmed: true` and the parsed `section_text`.
30
+ 2. Create its brief with `workit_sdd_task_brief` using `confirmed: true` and the parsed `section_text`.
31
31
  3. Use `task` with the built-in `explore` agent for read-only discovery when needed, then a fresh built-in `general` agent to implement from the brief. The parent remains coordinator-only.
32
32
  4. Require product changes to follow TDD: failing check first, minimal implementation, passing focused check.
33
- 5. Create the review package with `workflow_sdd_review_package` using `confirmed: true`.
34
- 6. Dispatch separate `general` agents for spec-compliance review and code-quality review. **Blocking findings** (Critical, Important, or spec-compliance) may trigger at most **two** fix+re-review rounds per task. **Advisory** findings (Minor, style, YAGNI, taste) never pause the loop — append them with `workflow_sdd_append_advisory` (`--task <id> --text <text>`) using `confirmed: true`.
35
- 7. Append the validated ledger line with `workflow_sdd_append_progress` using `confirmed: true`, then mark the task completed with `todowrite`.
33
+ 5. Create the review package with `workit_sdd_review_package` using `confirmed: true`.
34
+ 6. Dispatch separate `general` agents for spec-compliance review and code-quality review. **Blocking findings** (Critical, Important, or spec-compliance) may trigger at most **two** fix+re-review rounds per task. **Advisory** findings (Minor, style, YAGNI, taste) never pause the loop — append them with `workit_sdd_append_advisory` (`--task <id> --text <text>`) using `confirmed: true`.
35
+ 7. Append the validated ledger line with `workit_sdd_append_progress` using `confirmed: true`, then mark the task completed with `todowrite`.
36
36
 
37
37
  Each task lands exactly one contiguous non-empty commit range (`base..head`): fix rounds append commits to that range and never rewrite/amend an active review range; each progress line records the task's real base..head shas.
38
38
 
39
39
  Never redispatch completed task IDs. Pass task briefs and review diffs to agents; do not make them reparse the plan. Keep commits on the in-place feature/bugfix branch.
40
40
 
41
- Delegated authority is direct-child-only: a worker is the session whose host `parentID` exactly equals the activating coordinator's recorded `coordinator_session_id`; missing, mismatched, or multi-owner lineage fails closed with `delegation_lineage_denied`, and nested `opencode` launches are denied during active delegated work. An authorized child receives only the compact worker contract — execute the supplied brief, follow TDD, land one contiguous non-empty commit range, report results — never coordinator guidance, `wk-implement`, or ledger management. Coordinator bookkeeping (briefs, review packages, progress, advisories via `workflow_sdd_*`) stays with the coordinator session.
41
+ Delegated authority is direct-child-only: a worker is the session whose host `parentID` exactly equals the activating coordinator's recorded `coordinator_session_id`; missing, mismatched, or multi-owner lineage fails closed with `delegation_lineage_denied`, and nested `opencode` launches are denied during active delegated work. An authorized child receives only the compact worker contract — execute the supplied brief, follow TDD, land one contiguous non-empty commit range, report results — never coordinator guidance, `wk-implement`, or ledger management. Coordinator bookkeeping (briefs, review packages, progress, advisories via `workit_sdd_*`) stays with the coordinator session.
42
42
 
43
43
  ## Final gate
44
44
 
45
- After all remaining tasks, dispatch a final full-branch code review, run `workflow_verify`, and report exact per-check results. Present the full `<SDD_DIR>/advisories.md` roll-up once, then use native `question` so the user can choose which advisory items to fix, discuss, or discard. Only then may advisory fixes run. Use `workflow_git_context` for the final commit preview and the `wk-commit` skill for any approved commit. If a tracked stash reference exists, preview reapplication with `question`, then call `workflow_branch_setup` with `confirmed: true` only after approval.
45
+ After all remaining tasks, dispatch a final full-branch code review, run `workit_verify`, and report exact per-check results. Present the full `<SDD_DIR>/advisories.md` roll-up once, then use native `question` so the user can choose which advisory items to fix, discuss, or discard. Only then may advisory fixes run. Use `workit_git_context` for the final commit preview and the `wk-commit` skill for any approved commit. If a tracked stash reference exists, preview reapplication with `question`, then call `workit_branch_setup` with `confirmed: true` only after approval.
46
46
 
47
- **Mandatory:** end the run by calling `workflow_plan_complete` (OpenCode/Cursor) or the CLI `workit flow complete` (CLI host) after the final task once the SDD ledger is complete (all task IDs appended) and `workflow_verify` passes — a complete ledger and green verification are the tool's gates. Never finish the run while the plan is still `active`.
47
+ **Mandatory:** end the run by calling `workit_plan_complete` (OpenCode/Cursor) or the CLI `workit flow complete` (CLI host) after the final task once the SDD ledger is complete (all task IDs appended) and `workit_verify` passes — a complete ledger and green verification are the tool's gates. Never finish the run while the plan is still `active`.
@@ -9,10 +9,10 @@ disable-model-invocation: true
9
9
  Read [references/youtrack-update-style.md](references/youtrack-update-style.md) before drafting. Chat follows the user's language; the comment body is manager-friendly Spanish (`es-CL`).
10
10
 
11
11
  1. Load this skill explicitly through OpenCode's `skill` tool.
12
- 2. Ask in plain prose for the user-provided issue URL or ID, call `workflow_youtrack_parse_issue`, then read-only `workflow_youtrack_context`; structured results are ground truth.
13
- 3. Gather the user's notes, call `workflow_youtrack_parse_duration`, polish only supported facts, and call `workflow_youtrack_draft` for the exact comment preview.
12
+ 2. Ask in plain prose for the user-provided issue URL or ID, call `workit_youtrack_parse_issue`, then read-only `workit_youtrack_context`; structured results are ground truth.
13
+ 3. Gather the user's notes, call `workit_youtrack_parse_duration`, polish only supported facts, and call `workit_youtrack_draft` for the exact comment preview.
14
14
  4. Use native `question` with concise choices and allow a custom answer to approve the reviewed comment and time entry.
15
- 5. Call `workflow_youtrack_post` only after approval with `confirmed: true`, `issueId`, `markdown`, and `minutes`.
15
+ 5. Call `workit_youtrack_post` only after approval with `confirmed: true`, `issueId`, `markdown`, and `minutes`.
16
16
  6. Report the structured success, failure stage, or partial result; never infer success.
17
17
 
18
18
  Never guess the issue, compute minutes, pass a date, expose tokens, or post Git/file details as the update. Never present a clickable `question` option whose label is an instruction to type free text (e.g. "Type the issue URL/ID"): clicking an option returns the label literal, not the typed value, so ask for free text in prose instead, with the custom answer field enabled. Preserve the user's paragraph voice, explain technical terms plainly, and avoid robotic status bullets. `todowrite` and `task` are unnecessary here.
@@ -21,7 +21,7 @@ Consume the standard Result envelope:
21
21
 
22
22
  - If `result.ok` is true, report only effects proven by `result.data`.
23
23
  - If false, use `result.data.postedComment` and `result.data.loggedMinutes` to distinguish completed effects.
24
- - If `result.data.retry === "workflow_youtrack_post"`, use native `question` to ask whether to retry the unchanged reviewed `issueId`, `markdown`, and `minutes`. On approval, call `workflow_youtrack_post` with `confirmed: true` at most once; never loop.
25
- - If `result.data.retry === "workflow_youtrack_log_time"`, use native `question` to ask whether to retry the same `issueId` and `minutes`. On approval, call `workflow_youtrack_log_time` with `confirmed: true`, `issueId`, `minutes` at most once; never repost a known posted comment.
24
+ - If `result.data.retry === "workit_youtrack_post"`, use native `question` to ask whether to retry the unchanged reviewed `issueId`, `markdown`, and `minutes`. On approval, call `workit_youtrack_post` with `confirmed: true` at most once; never loop.
25
+ - If `result.data.retry === "workit_youtrack_log_time"`, use native `question` to ask whether to retry the same `issueId` and `minutes`. On approval, call `workit_youtrack_log_time` with `confirmed: true`, `issueId`, `minutes` at most once; never repost a known posted comment.
26
26
  - If the second attempt fails, stop and report its structured result. Never switch retry tools or infer that either effect succeeded.
27
27
  - If outcome is `unknown` or `result.data.retry` is absent, show `result.data.instructions` when present, reconcile manually, and do not retry either mutation.
@@ -1,6 +1,6 @@
1
1
  # YouTrack update style (Cristhofer / es-CL)
2
2
 
3
- Use when writing or polishing the comment body before `workflow_youtrack_draft`. **Preserve the author's voice** — like the ChatGPT revision thread: grammar, flow, and light structure, not a changelog.
3
+ Use when writing or polishing the comment body before `workit_youtrack_draft`. **Preserve the author's voice** — like the ChatGPT revision thread: grammar, flow, and light structure, not a changelog.
4
4
 
5
5
  ## Audience
6
6
 
@@ -7,11 +7,11 @@ disable-model-invocation: true
7
7
  # Meetings
8
8
 
9
9
  1. Load this skill explicitly through OpenCode's `skill` tool.
10
- 2. Call read-only `workflow_youtrack_context` with `mode: "meetings"`; its sole configured target is ground truth.
11
- 3. Ask for duration text, call `workflow_youtrack_parse_duration`, and draft the exact IRPT-12 time entry only.
10
+ 2. Call read-only `workit_youtrack_context` with `mode: "meetings"`; its sole configured target is ground truth.
11
+ 3. Ask for duration text, call `workit_youtrack_parse_duration`, and draft the exact IRPT-12 time entry only.
12
12
  4. Use native `question` with concise choices and allow a custom answer to approve the shown issue, minutes, and work-item text.
13
- 5. Call `workflow_youtrack_log_time` only after approval with `confirmed: true`, `issueId`, `minutes`, `text`.
14
- 6. If `result.data.outcome` is `unknown`, tell the user to reconcile manually and do not retry. Retry `workflow_youtrack_log_time` at most once only when `result.data.outcome` is `not_applied` and `result.data.retry` names that tool; follow `result.data.instructions` and correct invalid input before retrying.
13
+ 5. Call `workit_youtrack_log_time` only after approval with `confirmed: true`, `issueId`, `minutes`, `text`.
14
+ 6. If `result.data.outcome` is `unknown`, tell the user to reconcile manually and do not retry. Retry `workit_youtrack_log_time` at most once only when `result.data.outcome` is `not_applied` and `result.data.retry` names that tool; follow `result.data.instructions` and correct invalid input before retrying.
15
15
  7. Report the structured success or failure stage; never infer success.
16
16
 
17
- Use the configured meeting issue even if its default label is IRPT-12. Never compute minutes, pass a date, ask for a meeting type, post a comment, or call `workflow_youtrack_post`. `todowrite` and `task` are unnecessary here.
17
+ Use the configured meeting issue even if its default label is IRPT-12. Never compute minutes, pass a date, ask for a meeting type, post a comment, or call `workit_youtrack_post`. `todowrite` and `task` are unnecessary here.
@@ -7,16 +7,16 @@ disable-model-invocation: true
7
7
  # Pull request
8
8
 
9
9
  1. Load this skill explicitly through OpenCode's `skill` tool.
10
- 2. Call the read-only `workflow_pr_context` context tool for branch-exclusive commits and changes; its result is ground truth.
11
- 3. Call `workflow_verify`, then draft the exact title, body, base, head, and draft state from structured facts.
10
+ 2. Call the read-only `workit_pr_context` context tool for branch-exclusive commits and changes; its result is ground truth.
11
+ 3. Call `workit_verify`, then draft the exact title, body, base, head, and draft state from structured facts.
12
12
  4. **Show** the exact title and body in chat before any create question.
13
13
  5. Use native `question` with concise choices and allow a custom answer before creation.
14
- 6. Call `workflow_pr_create` only after approval with `confirmed: true` and the reviewed fields.
14
+ 6. Call `workit_pr_create` only after approval with `confirmed: true` and the reviewed fields.
15
15
  7. Report the structured success, failure stage, or partial result; never infer success.
16
16
 
17
17
  ## GitHub issue linking
18
18
 
19
- When the resolved workspace is github with `link_on_pr` — the `workflow_pr_context` tool's `vcs_config` returns `issues_provider: "github"` and `link_on_pr: true` — and no issue is derivable (no `WORKFLOW_GH_ISSUE` env, no numeric branch id like `feature/42-title`, which auto-links without asking), ask with native `question` before creation, exactly three options:
19
+ When the resolved workspace is github with `link_on_pr` — the `workit_pr_context` tool's `vcs_config` returns `issues_provider: "github"` and `link_on_pr: true` — and no issue is derivable (no `WORKFLOW_GH_ISSUE` env, no numeric branch id like `feature/42-title`, which auto-links without asking), ask with native `question` before creation, exactly three options:
20
20
 
21
21
  1. **Use an existing issue** — the user provides the number (extract it from a URL if pasted); verify it exists with `gh issue view <n>` before proceeding.
22
22
  2. **Create a new issue** — via `gh issue create --title "<title>" --body "<body>"`; on success pass the returned number. Reuse the missing-CLI guard: if `gh` is not installed, surface the structured error with the install link and ask the user to confirm once installed.
@@ -6,7 +6,7 @@ description: Draft user-facing release notes for an explicit range.
6
6
  # Release notes
7
7
 
8
8
  1. Load this skill explicitly through OpenCode's `skill` tool.
9
- 2. Require an exact version, tag, or commit range, then call the read-only `workflow_release_notes_context`; its result is ground truth.
9
+ 2. Require an exact version, tag, or commit range, then call the read-only `workit_release_notes_context`; its result is ground truth.
10
10
  3. Draft notes from structured facts and include both requested and resolved range metadata.
11
11
  4. Use native `question` only when the exact range must be supplied or corrected; allow a custom answer.
12
12
  5. This workflow has no mutation tool.
@@ -1,16 +1,16 @@
1
1
  ---
2
2
  name: wk-verify
3
- description: Discover and run project validation with workflow_verify.
3
+ description: Discover and run project validation with workit_verify.
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
7
  # Verify
8
8
 
9
9
  1. Load this skill explicitly through OpenCode's `skill` tool.
10
- 2. Call the read-only `workflow_verify` context tool with `dry_run: true`; its result is ground truth.
10
+ 2. Call the read-only `workit_verify` context tool with `dry_run: true`; its result is ground truth.
11
11
  3. Draft the discovered checks and the proposed selected run from structured facts.
12
12
  4. When the user must choose checks, use native `question` with concise choices and allow a custom answer.
13
- 5. Call `workflow_verify` with `dry_run: false` only for the approved run.
13
+ 5. Call `workit_verify` with `dry_run: false` only for the approved run.
14
14
  6. Report the structured success, failure stage, or partial result; never infer success.
15
15
 
16
16
  Do not edit files or fix failures. Report every check exactly as pass, fail, or skipped, including its command, exit code, and skip reason. Success requires every executed check to exit 0. If the user's message says `--dry-run`, stop after discovery.
@@ -20,48 +20,48 @@ This session is a handoff destination for a continued plan. The originating sess
20
20
  ## Hard gates
21
21
 
22
22
  - The parent is coordinator-only: it does not edit product code or perform delegated exploration.
23
- - Never use a worktree. Branch changes are in-place through `workflow_branch_setup` on `feature/*` or `bugfix/*`; never commit on protected branches.
24
- - Working state, briefs, ledgers, and review diffs live only under gitignored `<SDD_DIR>` in `docs/<slug>/sdd/` and use `workflow_sdd_*` tools.
23
+ - Never use a worktree. Branch changes are in-place through `workit_branch_setup` on `feature/*` or `bugfix/*`; never commit on protected branches.
24
+ - Working state, briefs, ledgers, and review diffs live only under gitignored `<SDD_DIR>` in `docs/<slug>/sdd/` and use `workit_sdd_*` tools.
25
25
  - Use native `todowrite` for visible task state as well as the gitignored ledger.
26
26
  - Use native `question` for branch/stash choices and guarded external mutations; call mutation tools only after approval with `confirmed: true` (grounded in the recorded NativeChoiceEvidence).
27
- - Flow-tool confirmations are never agent-typed booleans and never caller-supplied evidence objects: on OpenCode the plugin records the user's native-`question` answer as a host-observed one-use receipt (`attested: true`, `callID`, `selectedLabel`, `recordedAt`) consumed by `workflow_spec_approve` / `workflow_plan_approve` / `workflow_plan_menu` — no evidence argument exists, and delegated worker status comes from host session parentage (`parentID`), never a caller `role` field. On Cursor, confirmations are policy-only (`attested: false`) and subagent-driven execution is rejected as unsupported.
28
- - Delegated authority is direct-child-only: a worker is the session whose host `parentID` exactly equals the activating coordinator's recorded `coordinator_session_id`; missing, mismatched, or multi-owner lineage fails closed with `delegation_lineage_denied`, and nested `opencode` launches are denied during active delegated work. An authorized child receives only the compact worker contract (execute the supplied brief, follow TDD, land one contiguous non-empty commit range, report results) — never coordinator guidance, `wk-implement`, or ledger management; coordinator bookkeeping via `workflow_sdd_*` stays with the coordinator session.
29
- - On Cursor, for every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
27
+ - Flow-tool confirmations are never agent-typed booleans and never caller-supplied evidence objects: on OpenCode the plugin records the user's native-`question` answer as a host-observed one-use receipt (`attested: true`, `callID`, `selectedLabel`, `recordedAt`) consumed by `workit_spec_approve` / `workit_plan_approve` / `workit_plan_menu` — no evidence argument exists, and delegated worker status comes from host session parentage (`parentID`), never a caller `role` field. On Cursor, confirmations are policy-only (`attested: false`) and subagent-driven execution is rejected as unsupported.
28
+ - Delegated authority is direct-child-only: a worker is the session whose host `parentID` exactly equals the activating coordinator's recorded `coordinator_session_id`; missing, mismatched, or multi-owner lineage fails closed with `delegation_lineage_denied`, and nested `opencode` launches are denied during active delegated work. An authorized child receives only the compact worker contract (execute the supplied brief, follow TDD, land one contiguous non-empty commit range, report results) — never coordinator guidance, `wk-implement`, or ledger management; coordinator bookkeeping via `workit_sdd_*` stays with the coordinator session.
29
+ - On Cursor, for every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
30
30
  - Use native `task` with only the built-in `explore` and `general` agents.
31
31
 
32
32
  ## Flow gates (HARD)
33
33
 
34
34
  - `wk-implement` refuses to run unless the plan is `approved` (flow.json) and the post-plan menu was presented.
35
35
  - `wk-handoff` refuses to run unless both spec and plan are `approved`.
36
- - Sequence is enforced by tools: `workflow_spec_approve`, `workflow_plan_approve`, `workflow_plan_menu` — never skip a step (the spec/plan self-review runs automatically inside the transition; only the final approval asks for your confirmation).
36
+ - Sequence is enforced by tools: `workit_spec_approve`, `workit_plan_approve`, `workit_plan_menu` — never skip a step (the spec/plan self-review runs automatically inside the transition; only the final approval asks for your confirmation).
37
37
 
38
38
  ## Setup
39
39
 
40
- 0. Call `workflow_docs_validate` with the linked spec/plan paths. Hard-fail on any error before todos or branch setup.
41
- 1. Call `workflow_sdd_context` with `<PLAN_PATH>` and initialize `todowrite` from returned tasks.
42
- 2. Call `workflow_plan_tasks`; cache each top-level task's `section_text`.
40
+ 0. Call `workit_docs_validate` with the linked spec/plan paths. Hard-fail on any error before todos or branch setup.
41
+ 1. Call `workit_sdd_context` with `<PLAN_PATH>` and initialize `todowrite` from returned tasks.
42
+ 2. Call `workit_plan_tasks`; cache each top-level task's `section_text`.
43
43
  3. Mark IDs in `completed_task_ids` completed and never redispatch them.
44
- 4. Call `workflow_resolve_branch`, then show the current branch, target branch, and stash behavior before any in-place checkout/setup mutation.
44
+ 4. Call `workit_resolve_branch`, then show the current branch, target branch, and stash behavior before any in-place checkout/setup mutation.
45
45
  5. Always use `question`: for a clean tree ask whether to proceed or cancel; for a dirty tree add the stash choice and describe what will be stashed.
46
- 6. Call `workflow_branch_setup` with `confirmed: true` only after approval.
46
+ 6. Call `workit_branch_setup` with `confirmed: true` only after approval.
47
47
 
48
48
  ## Remaining-task loop
49
49
 
50
50
  For each top-level task absent from `completed_task_ids`:
51
51
 
52
52
  1. Mark it `in_progress` with `todowrite`.
53
- 2. Create a working-state brief with `workflow_sdd_task_brief` and `confirmed: true`.
53
+ 2. Create a working-state brief with `workit_sdd_task_brief` and `confirmed: true`.
54
54
  3. Delegate read-only discovery, when needed, to an `explore` agent. Delegate implementation to a fresh `general` agent. Product changes follow TDD.
55
- 4. Create a working-state diff with `workflow_sdd_review_package` and `confirmed: true`.
55
+ 4. Create a working-state diff with `workit_sdd_review_package` and `confirmed: true`.
56
56
  5. Delegate spec-compliance review and code-quality review to separate `general` agents.
57
- 6. **Blocking** findings (Critical, Important, or spec-compliance) may trigger at most **two** fix+re-review rounds per task. **Advisory** findings (Minor, style, YAGNI, taste) never pause the loop — append them with `workflow_sdd_append_advisory` (`--task <id> --text <text>`, `confirmed: true`) instead of an unrestricted file edit.
58
- 7. Append the validated ledger entry with `workflow_sdd_append_progress` and `confirmed: true`; mark the todo completed.
57
+ 6. **Blocking** findings (Critical, Important, or spec-compliance) may trigger at most **two** fix+re-review rounds per task. **Advisory** findings (Minor, style, YAGNI, taste) never pause the loop — append them with `workit_sdd_append_advisory` (`--task <id> --text <text>`, `confirmed: true`) instead of an unrestricted file edit.
58
+ 7. Append the validated ledger entry with `workit_sdd_append_progress` and `confirmed: true`; mark the todo completed.
59
59
 
60
60
  ## Final gate
61
61
 
62
- Run a separate full-branch code review, then `workflow_verify`. Present the full `<SDD_DIR>/advisories.md` roll-up once, then use native `question` so the user can choose which advisory items to fix, discuss, or discard. Report exact check results and never infer success. Use `workflow_git_context` for a commit preview and load `wk-commit` through `skill` for an approved commit. If working state contains a stash reference, preview reapplication through `question`, then call `workflow_branch_setup` with `confirmed: true` after approval.
62
+ Run a separate full-branch code review, then `workit_verify`. Present the full `<SDD_DIR>/advisories.md` roll-up once, then use native `question` so the user can choose which advisory items to fix, discuss, or discard. Report exact check results and never infer success. Use `workit_git_context` for a commit preview and load `wk-commit` through `skill` for an approved commit. If working state contains a stash reference, preview reapplication through `question`, then call `workit_branch_setup` with `confirmed: true` after approval.
63
63
 
64
- **Mandatory:** end the run by calling `workflow_plan_complete` (OpenCode/Cursor) or the CLI `workit flow complete` (CLI host) after the final task once the SDD ledger is complete (all task IDs appended) and `workflow_verify` passes — a complete ledger and green verification are the tool's gates. Never finish the run while the plan is still `active`.
64
+ **Mandatory:** end the run by calling `workit_plan_complete` (OpenCode/Cursor) or the CLI `workit flow complete` (CLI host) after the final task once the SDD ledger is complete (all task IDs appended) and `workit_verify` passes — a complete ledger and green verification are the tool's gates. Never finish the run while the plan is still `active`.
65
65
 
66
66
  ## Task order
67
67
 
@@ -70,4 +70,4 @@ Run a separate full-branch code review, then `workflow_verify`. Present the full
70
70
  ## Quality gate (HARD)
71
71
 
72
72
  - Specs/plans are written from `templates/spec-template.md` / `templates/plan-template.md`.
73
- - After `workflow_docs_validate`, surface `quality` findings (spec scan). Hard findings (missing required section, missing CA-XX) block task start unless the user explicitly waives them. Warnings are advisory.
73
+ - After `workit_docs_validate`, surface `quality` findings (spec scan). Hard findings (missing required section, missing CA-XX) block task start unless the user explicitly waives them. Warnings are advisory.
@@ -10,7 +10,7 @@
10
10
  ## Global Constraints
11
11
 
12
12
  - Each task lands exactly one contiguous non-empty commit range (`base..head`): fix rounds append commits to that range and never rewrite/amend an active review range; each progress line records the task's real base..head shas.
13
- - The final task ends execution with `workflow_plan_complete` (or the CLI `workit flow complete`) once the SDD ledger is complete and repository verification passes — a run never finishes while the plan is still `active`.
13
+ - The final task ends execution with `workit_plan_complete` (or the CLI `workit flow complete`) once the SDD ledger is complete and repository verification passes — a run never finishes while the plan is still `active`.
14
14
  - <project-wide requirements, one line each>
15
15
 
16
16
  ---
@@ -16,13 +16,13 @@
16
16
 
17
17
  ## Architecture
18
18
 
19
- <!-- REQUIRED if this spec has flows or architecture: render a mermaid diagram (workflow_present_flow). -->
19
+ <!-- REQUIRED if this spec has flows or architecture: render a mermaid diagram (workit_present_flow). -->
20
20
  ```mermaid
21
21
  flowchart TD
22
22
  A[Start] --> B[Step]
23
23
  ```
24
24
 
25
- <!-- REQUIRED if this spec touches UI: render an ASCII wireframe (workflow_present_ascii). -->
25
+ <!-- REQUIRED if this spec touches UI: render an ASCII wireframe (workit_present_ascii). -->
26
26
  ```text
27
27
  ┌──────────────┐
28
28
  │ Header │
@@ -27,31 +27,31 @@ Plans require:
27
27
 
28
28
  `bugfix/<slug>` is also valid. Never use `main`, `develop`, `master`, or `prod`. Use plain backtick paths. Top-level headings are exactly `### Task N: Title`; steps use `- [ ] **Step N:** ...`; task headings never appear inside fences.
29
29
 
30
- Before writing **Branch:** into a new spec or plan, call `workflow_docs_branch` and write the returned `branch` verbatim. When `action` is `keep`, use the current feature/bugfix branch. When `action` is `create_from_develop` or `create_from_base`, create the branch only through `workflow_branch_setup`; it uses the configured workspace/global target branch.
30
+ Before writing **Branch:** into a new spec or plan, call `workit_docs_branch` and write the returned `branch` verbatim. When `action` is `keep`, use the current feature/bugfix branch. When `action` is `create_from_develop` or `create_from_base`, create the branch only through `workit_branch_setup`; it uses the configured workspace/global target branch.
31
31
 
32
32
  ## Execution and handoff
33
33
 
34
34
  - Implementation uses `wk-implement` and subagent-driven development, with native `todowrite` and `task`.
35
35
  - Commits use `wk-commit` after its native `question` confirmation.
36
- - Continuation uses `wk-handoff`, whose `workflow_handoff_session` creates and seeds the OpenCode session automatically.
37
- - Never use worktrees. Resolve the declared branch with `workflow_resolve_branch`, preview dirty-tree stash choices with `question`, and apply an approved in-place checkout through `workflow_branch_setup` with `confirmed: true` (grounded in the recorded NativeChoiceEvidence).
38
- - Flow-tool confirmations are never agent-typed booleans and never caller-supplied evidence objects: on OpenCode the plugin records the user's native-`question` answer as a host-observed one-use receipt (`attested: true`, `callID`, `selectedLabel`, `recordedAt`) consumed by `workflow_spec_approve` / `workflow_plan_approve` / `workflow_plan_menu` — no evidence argument exists, and delegated worker status comes from host session parentage (`parentID`), never a caller `role` field. On Cursor, confirmations are policy-only (`attested: false`) and subagent-driven execution is rejected as unsupported.
39
- - Keep all SDD state under the gitignored `docs/<slug>/sdd/`; use `workflow_sdd_context` and the registered `workflow_sdd_*` tools.
40
- - After implementation, use `question` before an approved stash reapply through `workflow_branch_setup` with `confirmed: true`.
36
+ - Continuation uses `wk-handoff`, whose `workit_handoff_session` creates and seeds the OpenCode session automatically.
37
+ - Never use worktrees. Resolve the declared branch with `workit_resolve_branch`, preview dirty-tree stash choices with `question`, and apply an approved in-place checkout through `workit_branch_setup` with `confirmed: true` (grounded in the recorded NativeChoiceEvidence).
38
+ - Flow-tool confirmations are never agent-typed booleans and never caller-supplied evidence objects: on OpenCode the plugin records the user's native-`question` answer as a host-observed one-use receipt (`attested: true`, `callID`, `selectedLabel`, `recordedAt`) consumed by `workit_spec_approve` / `workit_plan_approve` / `workit_plan_menu` — no evidence argument exists, and delegated worker status comes from host session parentage (`parentID`), never a caller `role` field. On Cursor, confirmations are policy-only (`attested: false`) and subagent-driven execution is rejected as unsupported.
39
+ - Keep all SDD state under the gitignored `docs/<slug>/sdd/`; use `workit_sdd_context` and the registered `workit_sdd_*` tools.
40
+ - After implementation, use `question` before an approved stash reapply through `workit_branch_setup` with `confirmed: true`.
41
41
 
42
42
  ## YouTrack content
43
43
 
44
- Chat follows the user's language. YouTrack task comments are Spanish (`es-CL`) and use `workflow_youtrack_draft` followed by reviewed `workflow_youtrack_post` with `confirmed: true`. Preserve the user's paragraph voice; do not inject commits, file paths, or robotic bullet reports.
44
+ Chat follows the user's language. YouTrack task comments are Spanish (`es-CL`) and use `workit_youtrack_draft` followed by reviewed `workit_youtrack_post` with `confirmed: true`. Preserve the user's paragraph voice; do not inject commits, file paths, or robotic bullet reports.
45
45
 
46
46
  ## Final self-check
47
47
 
48
- Before handoff, call `workflow_docs_validate` on the linked spec/plan pair. Hard-fail on any error; never offer execution when validation fails.
48
+ Before handoff, call `workit_docs_validate` on the linked spec/plan pair. Hard-fail on any error; never offer execution when validation fails.
49
49
 
50
50
  Before handoff, verify the saved spec path, plan path, declared branch, top-level task numbering, and workflow-managed SDD directory through the registered read-only workflow tools. Report structured failures; never infer success.
51
51
 
52
52
  ## Post-plan execution choice
53
53
 
54
- After saving a plan, call `workflow_docs_validate` on the spec/plan pair. On failure, stop and fix docs — do not offer execution.
54
+ After saving a plan, call `workit_docs_validate` on the spec/plan pair. On failure, stop and fix docs — do not offer execution.
55
55
 
56
56
  On success, use native `question` / Cursor `AskQuestion` with exactly these options (no stay, no A/B/C prose duplicate):
57
57
 
@@ -62,7 +62,7 @@ On success, use native `question` / Cursor `AskQuestion` with exactly these opti
62
62
  5. Review plan first
63
63
  6. Change model first
64
64
 
65
- `Change model first` is display-only deferral: it ends the turn without calling `workflow_plan_menu` and re-presents the menu on the next turn. Every other choice must call `workflow_plan_menu` immediately after the answer and before any skill, branch question, mutation, or handoff.
65
+ `Change model first` is display-only deferral: it ends the turn without calling `workit_plan_menu` and re-presents the menu on the next turn. Every other choice must call `workit_plan_menu` immediately after the answer and before any skill, branch question, mutation, or handoff.
66
66
 
67
67
  Never emit Superpowers text beginning “Two execution options”.
68
68
 
@@ -63,7 +63,7 @@ digraph process {
63
63
  "Read plan, note context and global constraints, create todos" [shape=box];
64
64
  "More tasks remain?" [shape=diamond];
65
65
  "Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" [shape=box];
66
- "Run verification, then workflow_plan_complete once the ledger is complete and verification passes" [shape=box];
66
+ "Run verification, then workit_plan_complete once the ledger is complete and verification passes" [shape=box];
67
67
  "Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
68
68
 
69
69
  "Read plan, note context and global constraints, create todos" -> "Dispatch implementer subagent (./implementer-prompt.md)";
@@ -79,12 +79,12 @@ digraph process {
79
79
  "Mark task complete in todo list and progress ledger" -> "More tasks remain?";
80
80
  "More tasks remain?" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="yes"];
81
81
  "More tasks remain?" -> "Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" [label="no"];
82
- "Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" -> "Run verification, then workflow_plan_complete once the ledger is complete and verification passes";
83
- "Run verification, then workflow_plan_complete once the ledger is complete and verification passes" -> "Use superpowers:finishing-a-development-branch";
82
+ "Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" -> "Run verification, then workit_plan_complete once the ledger is complete and verification passes";
83
+ "Run verification, then workit_plan_complete once the ledger is complete and verification passes" -> "Use superpowers:finishing-a-development-branch";
84
84
  }
85
85
  ```
86
86
 
87
- **Mandatory completion:** after the final whole-branch review, run repository verification. Once the SDD ledger is complete and verification passes, end the run by calling `workflow_plan_complete` (or the CLI `workit flow complete`) — a complete ledger and green verification are the tool's gates. Never finish while the plan is still `active`.
87
+ **Mandatory completion:** after the final whole-branch review, run repository verification. Once the SDD ledger is complete and verification passes, end the run by calling `workit_plan_complete` (or the CLI `workit flow complete`) — a complete ledger and green verification are the tool's gates. Never finish while the plan is still `active`.
88
88
 
89
89
  ## Pre-Flight Plan Review
90
90
 
package/dist/plugin.js CHANGED
@@ -348,16 +348,16 @@ ${contract}
348
348
  ## Presentation and visual companion overrides
349
349
 
350
350
  - NEVER offer Superpowers visual companion or open a browser tab for layout comparisons.
351
- - For UI wireframes and layout options use \`workflow_present_ascii\` with a JSON spec; show the tool output in a fenced \`text\` block.
352
- - For process or architecture flows use \`workflow_present_flow\`; show the tool output in a fenced \`mermaid\` block.
351
+ - For UI wireframes and layout options use \`workit_present_ascii\` with a JSON spec; show the tool output in a fenced \`text\` block.
352
+ - For process or architecture flows use \`workit_present_flow\`; show the tool output in a fenced \`mermaid\` block.
353
353
  - NEVER hand-draw ASCII wireframes or mermaid in chat without calling the tool first.
354
354
  - For bounded user choices use OpenCode native \`question\`; never A/B/C option lists in chat prose.
355
355
 
356
356
  ## Post-plan execution choice
357
357
 
358
- After saving a plan, call \`workflow_docs_validate\` on the spec/plan pair. On failure, stop — do not offer execution.
358
+ After saving a plan, call \`workit_docs_validate\` on the spec/plan pair. On failure, stop — do not offer execution.
359
359
 
360
- On success, use native \`question\` with exactly: Subagent-driven, Inline, Handoff (new session only), Review spec first, Review plan first, Change model first. Change model first is display-only: ends turn without workflow_plan_menu, re-presents menu next turn; real choices call workflow_plan_menu immediately before any skill/branch/mutation/handoff. Never emit Superpowers “Two execution options” prose. No \`--stay\` in this menu.
360
+ On success, use native \`question\` with exactly: Subagent-driven, Inline, Handoff (new session only), Review spec first, Review plan first, Change model first. Change model first is display-only: ends turn without workit_plan_menu, re-presents menu next turn; real choices call workit_plan_menu immediately before any skill/branch/mutation/handoff. Never emit Superpowers “Two execution options” prose. No \`--stay\` in this menu.
361
361
 
362
362
  ## Library documentation
363
363
 
@@ -392,14 +392,14 @@ var REMINDER_TEXT = `<workflow-contract-reminder>
392
392
  - Bounded user choices → call the native \`question\` tool (never A/B/C or 1/2/3 lists in prose).
393
393
  - After a plan is approved → native \`question\` menu with exactly: ${SOURCE_MENU_LABELS_DISPLAY.join(", ")}.
394
394
  - Tools with \`confirmed\` → call them; never fabricate their result.
395
- - Before the first \`workflow_spec_approve\`/\`workflow_plan_approve\` (self-review) run the superpowers writing-plans Self-Review checklist: spec coverage (every spec requirement maps to a task), placeholder scan, type consistency; fix findings inline.
395
+ - Before the first \`workit_spec_approve\`/\`workit_plan_approve\` (self-review) run the superpowers writing-plans Self-Review checklist: spec coverage (every spec requirement maps to a task), placeholder scan, type consistency; fix findings inline.
396
396
  - Delivering docs → clickable markdown link \`[spec.md](docs/<slug>/spec.md)\` + 3-5 bullet summary.
397
397
  </workflow-contract-reminder>`;
398
398
  var DESTINATION_REMINDER_TEXT = `<workflow-contract-reminder>
399
399
  - Bounded user choices → call the native \`question\` tool (never A/B/C or 1/2/3 lists in prose).
400
400
  - This session is a handoff destination: present the post-plan menu with exactly: ${DESTINATION_MENU_LABELS.join(", ")}.
401
401
  - Tools with \`confirmed\` → call them; never fabricate their result.
402
- - Before the first \`workflow_spec_approve\`/\`workflow_plan_approve\` (self-review) run the superpowers writing-plans Self-Review checklist: spec coverage (every spec requirement maps to a task), placeholder scan, type consistency; fix findings inline.
402
+ - Before the first \`workit_spec_approve\`/\`workit_plan_approve\` (self-review) run the superpowers writing-plans Self-Review checklist: spec coverage (every spec requirement maps to a task), placeholder scan, type consistency; fix findings inline.
403
403
  - Delivering docs → clickable markdown link \`[spec.md](docs/<slug>/spec.md)\` + 3-5 bullet summary.
404
404
  ${HANDOFF_DESTINATION_MARKER}
405
405
  </workflow-contract-reminder>`;
@@ -431,7 +431,7 @@ var CONFIG_GUARD_TEXT = `<workflow-config-guard>
431
431
  A tool failed with a config-gap error (\`workflow config missing\`). Never configure without asking — ask with the native \`question\` tool, exactly three options: (1) configure only what's missing (guided, via the /wk-init skill flow for those actions), (2) run the full wizard (\`npx workit init\`), (3) skip — report the final error naming the missing items and how to configure them.
432
432
  </workflow-config-guard>`;
433
433
  var VERIFICATION_TEXT = `<workflow-verification-rail>
434
- Skill: verification-before-completion. NO completion claims without fresh verification evidence — run the check command (e.g. \`bun run check\` / \`workflow_verify\`) and show its output before claiming done/fixed/passing. If you haven't run the verification command in this message, you cannot claim it passes.
434
+ Skill: verification-before-completion. NO completion claims without fresh verification evidence — run the check command (e.g. \`bun run check\` / \`workit_verify\`) and show its output before claiming done/fixed/passing. If you haven't run the verification command in this message, you cannot claim it passes.
435
435
  </workflow-verification-rail>`;
436
436
  var TDD_TEXT = `<workflow-tdd-rail>
437
437
  Skill: test-driven-development. NO production code without a failing test first — write the test, watch it fail, then write the minimal code to pass.
@@ -2437,7 +2437,7 @@ var branchSetup = ({
2437
2437
  if (dirty) {
2438
2438
  if (stash !== "yes") {
2439
2439
  return {
2440
- error: "dirty working tree — ask with native question, then call workflow_branch_setup with stash=yes"
2440
+ error: "dirty working tree — ask with native question, then call workit_branch_setup with stash=yes"
2441
2441
  };
2442
2442
  }
2443
2443
  try {
@@ -3363,7 +3363,7 @@ async function postUpdate({
3363
3363
  postedComment: true,
3364
3364
  loggedMinutes: 0,
3365
3365
  error: time.error,
3366
- retry: "workflow_youtrack_log_time"
3366
+ retry: "workit_youtrack_log_time"
3367
3367
  };
3368
3368
  }
3369
3369
  return { ok: true, issueId, postedComment: true, loggedMinutes: minutes };
@@ -4503,7 +4503,7 @@ function sddContext({
4503
4503
  task_count,
4504
4504
  flow: { spec: flow.spec, plan: flow.plan, menu: flow.menu },
4505
4505
  todowrite_required: true,
4506
- todowrite_hint: "REQUIRED: Call OpenCode todowrite with todos from this result so the native task list shows progress. Before each task set status in_progress; after workflow_sdd_append_progress set it completed."
4506
+ todowrite_hint: "REQUIRED: Call OpenCode todowrite with todos from this result so the native task list shows progress. Before each task set status in_progress; after workit_sdd_append_progress set it completed."
4507
4507
  };
4508
4508
  }
4509
4509
  function sddTaskBrief({
@@ -4938,7 +4938,7 @@ var CHANGELOG_RULES = `- Use an [Unreleased] section.
4938
4938
  - Entries should be human-readable and user-facing.
4939
4939
  - Do not use raw commit messages as changelog bullets.
4940
4940
  - MERGE into existing ### Category under [Unreleased] — never append a second ### Added / ### Fixed block.
4941
- - Apply with the native workflow_changelog_apply tool only (not hand-edits under Unreleased).
4941
+ - Apply with the native workit_changelog_apply tool only (not hand-edits under Unreleased).
4942
4942
  - If Unreleased already has duplicate category headings, normalize_only first.`;
4943
4943
  function changelogContext(root2, range) {
4944
4944
  const cwd = path20.resolve(repoRoot3(root2));
@@ -5473,7 +5473,7 @@ var readFlowStrict = (root2, slug) => {
5473
5473
  const file = flowPath(root2, slug);
5474
5474
  const rel = path22.posix.join("docs", slug, "sdd", "flow.json");
5475
5475
  if (!existsSync15(file)) {
5476
- return err2("flow_not_activated", `flow not activated for ${slug} — run workflow_flow_status first`);
5476
+ return err2("flow_not_activated", `flow not activated for ${slug} — run workit_flow_status first`);
5477
5477
  }
5478
5478
  let text;
5479
5479
  try {
@@ -6382,10 +6382,10 @@ var assertHandoffReady = (root2, planPath) => {
6382
6382
  return effective;
6383
6383
  const state = effective.state;
6384
6384
  if (state.spec.status !== "approved") {
6385
- return err2("spec_not_approved", `spec not approved (status: ${state.spec.status}). Run workflow_spec_approve after the user's approval.`);
6385
+ return err2("spec_not_approved", `spec not approved (status: ${state.spec.status}). Run workit_spec_approve after the user's approval.`);
6386
6386
  }
6387
6387
  if (state.plan.status !== "approved") {
6388
- return err2("plan_not_approved", `plan not approved (status: ${state.plan.status}). Run workflow_plan_approve after the user's approval.`);
6388
+ return err2("plan_not_approved", `plan not approved (status: ${state.plan.status}). Run workit_plan_approve after the user's approval.`);
6389
6389
  }
6390
6390
  if (state.handoff_destination) {
6391
6391
  return err2("recursive_handoff", "this flow is already a handoff destination — a second handoff is rejected");
@@ -6404,13 +6404,13 @@ var assertSddControlGates = (root2, slug, opts = {}, ctx) => {
6404
6404
  return effective;
6405
6405
  const state = effective.state;
6406
6406
  if (state.spec.status !== "approved") {
6407
- return err2("spec_not_approved", `spec not approved (status: ${state.spec.status}). Run workflow_spec_approve after the user's approval.`);
6407
+ return err2("spec_not_approved", `spec not approved (status: ${state.spec.status}). Run workit_spec_approve after the user's approval.`);
6408
6408
  }
6409
6409
  if (state.plan.status !== "approved") {
6410
- return err2("plan_not_approved", `plan not approved (status: ${state.plan.status}). Run workflow_plan_approve after the user's approval.`);
6410
+ return err2("plan_not_approved", `plan not approved (status: ${state.plan.status}). Run workit_plan_approve after the user's approval.`);
6411
6411
  }
6412
6412
  if (opts.requireMenu && !state.menu.presented) {
6413
- return err2("menu_not_presented", "post-plan menu not presented. Record the native question answer with workflow_plan_menu.");
6413
+ return err2("menu_not_presented", "post-plan menu not presented. Record the native question answer with workit_plan_menu.");
6414
6414
  }
6415
6415
  if (opts.requireDocs) {
6416
6416
  const validated = docsValidate({
@@ -6441,18 +6441,18 @@ var COORDINATOR_WRITE_TOOLS = [
6441
6441
  "touch",
6442
6442
  "chmod",
6443
6443
  "chown",
6444
- "workflow_commit",
6445
- "workflow_pr_create",
6446
- "workflow_rule_edit",
6447
- "workflow_template_edit",
6448
- "workflow_changelog_apply",
6449
- "workflow_branch_setup",
6444
+ "workit_commit",
6445
+ "workit_pr_create",
6446
+ "workit_rule_edit",
6447
+ "workit_template_edit",
6448
+ "workit_changelog_apply",
6449
+ "workit_branch_setup",
6450
6450
  "workit_init_apply",
6451
- "workflow_docs_promote",
6452
- "workflow_docs_layout",
6453
- "workflow_docs_repo_link",
6454
- "workflow_youtrack_post",
6455
- "workflow_youtrack_log_time"
6451
+ "workit_docs_promote",
6452
+ "workit_docs_layout",
6453
+ "workit_docs_repo_link",
6454
+ "workit_youtrack_post",
6455
+ "workit_youtrack_log_time"
6456
6456
  ];
6457
6457
  var BASH_READ_TOKENS = new Set([
6458
6458
  "cat",
@@ -6769,10 +6769,10 @@ var subagentDrivenInterception = (input) => {
6769
6769
  }
6770
6770
  }
6771
6771
  if ([
6772
- "workflow_sdd_task_brief",
6773
- "workflow_sdd_review_package",
6774
- "workflow_sdd_append_progress",
6775
- "workflow_sdd_append_advisory"
6772
+ "workit_sdd_task_brief",
6773
+ "workit_sdd_review_package",
6774
+ "workit_sdd_append_progress",
6775
+ "workit_sdd_append_advisory"
6776
6776
  ].includes(input.tool)) {
6777
6777
  return err2("delegation_lineage_denied", "SDD control metadata is coordinator-owned — workers execute briefs, not bookkeeping");
6778
6778
  }
@@ -6815,7 +6815,7 @@ var findActiveSubagentDrivenContexts = (root2) => {
6815
6815
  // packages/workit-core/src/core/detector.ts
6816
6816
  var detectConfigGapError = (text) => text.includes(CONFIG_GAP_MARKER);
6817
6817
  var COMPLETION_CLAIMS = /\b(?:done|fixed|passing|green|complete|all set)\b/i;
6818
- var VERIFICATION_EVIDENCE = /\bbun run check\b|\bworkflow_verify\b|\bbun test\b|\bchecks?\s+pass(?:es|ing)?\b|\btests?\s+pass(?:es|ing)?\b/i;
6818
+ var VERIFICATION_EVIDENCE = /\bbun run check\b|\bworkit_verify\b|\bbun test\b|\bchecks?\s+pass(?:es|ing)?\b|\btests?\s+pass(?:es|ing)?\b/i;
6819
6819
  var detectVerificationClaim = (text) => COMPLETION_CLAIMS.test(text) && !VERIFICATION_EVIDENCE.test(text);
6820
6820
  var IMPLEMENTATION_SIGNALS = /\b(?:changed|implemented|implementing|added|refactored|commit(?:ted|s)?|edited)\b/i;
6821
6821
  var FAILING_TEST_WORDS = /\b(?:failing test|test failed|watch it fail|red-green|tdd|test first)\b/i;
@@ -19849,37 +19849,37 @@ function createRepoTools(runtime = defaultRuntime) {
19849
19849
  args: {},
19850
19850
  execute: async (_input, context2) => output(scriptResult(await runtime.toolkitStatus(context2.directory), json2))
19851
19851
  }),
19852
- workflow_git_context: tool({
19852
+ workit_git_context: tool({
19853
19853
  description: "Read Git branch and change context",
19854
19854
  args: { paths: tool.schema.array(tool.schema.string()).optional() },
19855
19855
  execute: async ({ paths }, context2) => output(ok(gitContext(context2.directory, paths ?? [])))
19856
19856
  }),
19857
- workflow_verify: tool({
19857
+ workit_verify: tool({
19858
19858
  description: "Discover and run repository verification",
19859
19859
  args: { dry_run: tool.schema.boolean().optional() },
19860
19860
  execute: async ({ dry_run }, context2) => output(scriptResult(runtime.verifyProject(context2.directory, Boolean(dry_run)), parseVerifyOutput))
19861
19861
  }),
19862
- workflow_pr_context: tool({
19862
+ workit_pr_context: tool({
19863
19863
  description: "Gather branch-exclusive PR context",
19864
19864
  args: { range: tool.schema.string().optional() },
19865
19865
  execute: async ({ range }, context2) => contextWithRange(context2.directory, runtime.prContext, range, parsePr)
19866
19866
  }),
19867
- workflow_changelog_context: tool({
19867
+ workit_changelog_context: tool({
19868
19868
  description: "Gather changelog context",
19869
19869
  args: { range: tool.schema.string().optional() },
19870
19870
  execute: async ({ range }, context2) => contextWithRange(context2.directory, runtime.changelogContext, range, parseChangelog)
19871
19871
  }),
19872
- workflow_release_notes_context: tool({
19872
+ workit_release_notes_context: tool({
19873
19873
  description: "Gather release notes for an explicit range",
19874
19874
  args: { range_or_tag: tool.schema.string() },
19875
19875
  execute: async ({ range_or_tag }, context2) => !range_or_tag.trim() ? output(fail("release tag or range required")) : contextWithRange(context2.directory, (root2, value) => runtime.releaseContext(root2, value ?? ""), range_or_tag, parseRelease)
19876
19876
  }),
19877
- workflow_docs_context: tool({
19877
+ workit_docs_context: tool({
19878
19878
  description: "Gather documentation refresh context",
19879
19879
  args: { range: tool.schema.string().optional() },
19880
19880
  execute: async ({ range }, context2) => output(scriptResult(runtime.docsContext(context2.directory, range), parseDocs))
19881
19881
  }),
19882
- workflow_changelog_apply: tool({
19882
+ workit_changelog_apply: tool({
19883
19883
  description: "Apply confirmed Keep a Changelog entries to Unreleased",
19884
19884
  args: {
19885
19885
  confirmed: tool.schema.boolean(),
@@ -19907,7 +19907,7 @@ function createRepoTools(runtime = defaultRuntime) {
19907
19907
  })));
19908
19908
  }
19909
19909
  }),
19910
- workflow_branch_setup: tool({
19910
+ workit_branch_setup: tool({
19911
19911
  description: "Apply a confirmed in-place feature or bugfix branch setup",
19912
19912
  args: {
19913
19913
  confirmed: tool.schema.boolean(),
@@ -19941,7 +19941,7 @@ function createRepoTools(runtime = defaultRuntime) {
19941
19941
  }));
19942
19942
  }
19943
19943
  }),
19944
- workflow_commit: tool({
19944
+ workit_commit: tool({
19945
19945
  description: "Commit the current index on a feature or bugfix branch without staging files",
19946
19946
  args: { confirmed: tool.schema.boolean(), message: tool.schema.string() },
19947
19947
  execute: async ({ confirmed, message }, context2) => {
@@ -19962,7 +19962,7 @@ function createRepoTools(runtime = defaultRuntime) {
19962
19962
  })));
19963
19963
  }
19964
19964
  }),
19965
- workflow_pr_create: tool({
19965
+ workit_pr_create: tool({
19966
19966
  description: "Create a confirmed pull or merge request",
19967
19967
  args: {
19968
19968
  confirmed: tool.schema.boolean(),
@@ -20196,7 +20196,7 @@ function createFlowTools(receipts, client) {
20196
20196
  }
20197
20197
  });
20198
20198
  return {
20199
- workflow_flow_status: tool({
20199
+ workit_flow_status: tool({
20200
20200
  description: "Read the spec/plan approval flow state for a workflow; on first read it records flow activation and canonical document paths (FG-01)",
20201
20201
  args: {
20202
20202
  plan_path: tool.schema.string().optional(),
@@ -20234,7 +20234,7 @@ function createFlowTools(receipts, client) {
20234
20234
  }
20235
20235
  }
20236
20236
  }),
20237
- workflow_spec_approve: tool({
20237
+ workit_spec_approve: tool({
20238
20238
  description: "Advance spec status from a host-observed native-question receipt: draft -> approved in a single call. The self-review validation runs automatically inside the transition; only the final approval asks for your confirmation. The receipt is recorded automatically when the user answers the `question` tool; there is no evidence argument (AR-12).",
20239
20239
  args: {
20240
20240
  spec_path: tool.schema.string()
@@ -20253,7 +20253,7 @@ function createFlowTools(receipts, client) {
20253
20253
  return output2(result.ok ? ok({ spec: spec_path, status, question: consumed.receipt.question }) : fail(result.error, { code: result.code }));
20254
20254
  }
20255
20255
  }),
20256
- workflow_plan_approve: tool({
20256
+ workit_plan_approve: tool({
20257
20257
  description: "Advance plan status from a host-observed native-question receipt: draft -> approved in a single call. The self-review validation runs automatically inside the transition; only the final approval asks for your confirmation. Requires approved spec. There is no evidence argument (AR-12).",
20258
20258
  args: {
20259
20259
  plan_path: tool.schema.string()
@@ -20272,7 +20272,7 @@ function createFlowTools(receipts, client) {
20272
20272
  return output2(result.ok ? ok({ plan: plan_path, status, question: consumed.receipt.question }) : fail(result.error, { code: result.code }));
20273
20273
  }
20274
20274
  }),
20275
- workflow_plan_menu: tool({
20275
+ workit_plan_menu: tool({
20276
20276
  description: "Record the answered post-plan choice menu (called after the native question). The receipt label must match the choice exactly; there is no evidence argument (AR-12).",
20277
20277
  args: {
20278
20278
  plan_path: tool.schema.string(),
@@ -20302,9 +20302,9 @@ function createFlowTools(receipts, client) {
20302
20302
  }) : fail(result.error, { code: result.code }));
20303
20303
  }
20304
20304
  }),
20305
- workflow_plan_pause: lifecycleTool("pause", "Pause plan", "Pause a running plan from a host-observed native-question receipt: active -> paused. The receipt label must be exactly `Pause plan`; there is no evidence argument (AR-12). A failed gate (already-paused) spends the receipt — re-answer the native question to retry."),
20306
- workflow_plan_resume: lifecycleTool("resume", "Resume plan", "Resume a paused plan from a host-observed native-question receipt: paused -> active. The receipt label must be exactly `Resume plan`; there is no evidence argument (AR-12). A failed gate (flow_not_paused) spends the receipt — re-answer the native question to retry."),
20307
- workflow_plan_complete: lifecycleTool("complete", "Complete plan", "Complete a running plan from a host-observed native-question receipt: active/paused -> completed, after the SDD ledger is complete and repository verification passes. The receipt label must be exactly `Complete plan`; there is no evidence argument (AR-12). A failed gate (execution_incomplete or verification_failed) spends the receipt — re-answer the native question to retry.")
20305
+ workit_plan_pause: lifecycleTool("pause", "Pause plan", "Pause a running plan from a host-observed native-question receipt: active -> paused. The receipt label must be exactly `Pause plan`; there is no evidence argument (AR-12). A failed gate (already-paused) spends the receipt — re-answer the native question to retry."),
20306
+ workit_plan_resume: lifecycleTool("resume", "Resume plan", "Resume a paused plan from a host-observed native-question receipt: paused -> active. The receipt label must be exactly `Resume plan`; there is no evidence argument (AR-12). A failed gate (flow_not_paused) spends the receipt — re-answer the native question to retry."),
20307
+ workit_plan_complete: lifecycleTool("complete", "Complete plan", "Complete a running plan from a host-observed native-question receipt: active/paused -> completed, after the SDD ledger is complete and repository verification passes. The receipt label must be exactly `Complete plan`; there is no evidence argument (AR-12). A failed gate (execution_incomplete or verification_failed) spends the receipt — re-answer the native question to retry.")
20308
20308
  };
20309
20309
  }
20310
20310
 
@@ -20360,7 +20360,7 @@ function createSddTools(state, client) {
20360
20360
  sdd: String(data.sdd_dir ?? "")
20361
20361
  });
20362
20362
  return {
20363
- workflow_docs_branch: tool({
20363
+ workit_docs_branch: tool({
20364
20364
  description: "Resolve branch for spec/plan authors: keep current feature|bugfix or create from the configured base",
20365
20365
  args: {
20366
20366
  plan_path: tool.schema.string().optional(),
@@ -20376,7 +20376,7 @@ function createSddTools(state, client) {
20376
20376
  });
20377
20377
  })
20378
20378
  }),
20379
- workflow_docs_validate: tool({
20379
+ workit_docs_validate: tool({
20380
20380
  description: "Hard-fail validate spec/plan headers, link, branch, task order; returns quality findings (hard/warning)",
20381
20381
  args: {
20382
20382
  spec_path: tool.schema.string(),
@@ -20397,7 +20397,7 @@ function createSddTools(state, client) {
20397
20397
  return result;
20398
20398
  })
20399
20399
  }),
20400
- workflow_plan_tasks: tool({
20400
+ workit_plan_tasks: tool({
20401
20401
  description: "Parse top-level tasks from a workflow plan",
20402
20402
  args: { plan_path: tool.schema.string(), spec_path: tool.schema.string().optional() },
20403
20403
  execute: async ({ plan_path, spec_path }, context2) => invoke(() => {
@@ -20414,7 +20414,7 @@ function createSddTools(state, client) {
20414
20414
  return data;
20415
20415
  })
20416
20416
  }),
20417
- workflow_resolve_branch: tool({
20417
+ workit_resolve_branch: tool({
20418
20418
  description: "Resolve a branch from repository spec and plan metadata",
20419
20419
  args: { spec_path: tool.schema.string(), plan_path: tool.schema.string() },
20420
20420
  execute: async ({ spec_path, plan_path }, context2) => invoke(() => {
@@ -20423,7 +20423,7 @@ function createSddTools(state, client) {
20423
20423
  return resolveBranch({ spec_path, plan_path, workspace_root: context2.directory });
20424
20424
  })
20425
20425
  }),
20426
- workflow_sdd_context: tool({
20426
+ workit_sdd_context: tool({
20427
20427
  description: "Resolve the SDD workspace and progress ledger",
20428
20428
  args: {
20429
20429
  plan_path: tool.schema.string().optional(),
@@ -20450,7 +20450,7 @@ function createSddTools(state, client) {
20450
20450
  return data;
20451
20451
  })
20452
20452
  }),
20453
- workflow_sdd_task_brief: tool({
20453
+ workit_sdd_task_brief: tool({
20454
20454
  description: "Write a confirmed task brief. Delegated status is host-derived from session parentage (child session = worker; root = coordinator, blocked for subagent-driven product edits).",
20455
20455
  args: {
20456
20456
  confirmed: tool.schema.boolean(),
@@ -20476,7 +20476,7 @@ function createSddTools(state, client) {
20476
20476
  });
20477
20477
  }
20478
20478
  }),
20479
- workflow_sdd_review_package: tool({
20479
+ workit_sdd_review_package: tool({
20480
20480
  description: "Write a confirmed task review diff. Delegated status is host-derived from session parentage (child session = worker; root = coordinator, blocked for subagent-driven product edits).",
20481
20481
  args: {
20482
20482
  confirmed: tool.schema.boolean(),
@@ -20506,7 +20506,7 @@ function createSddTools(state, client) {
20506
20506
  }));
20507
20507
  }
20508
20508
  }),
20509
- workflow_sdd_append_progress: tool({
20509
+ workit_sdd_append_progress: tool({
20510
20510
  description: "Append one confirmed validated SDD progress line. Delegated status is host-derived from session parentage (child session = worker; root = coordinator, blocked for subagent-driven product edits).",
20511
20511
  args: {
20512
20512
  confirmed: tool.schema.boolean(),
@@ -20526,7 +20526,7 @@ function createSddTools(state, client) {
20526
20526
  });
20527
20527
  }
20528
20528
  }),
20529
- workflow_sdd_append_advisory: tool({
20529
+ workit_sdd_append_advisory: tool({
20530
20530
  description: "Append a validated advisory line to docs/<slug>/sdd/advisories.md (coordinator-owned).",
20531
20531
  args: {
20532
20532
  confirmed: tool.schema.boolean(),
@@ -20760,7 +20760,7 @@ var idempotentMarkDestination = (root2, slug, planPath) => {
20760
20760
  };
20761
20761
  function createHandoffTools(client, state) {
20762
20762
  return {
20763
- workflow_handoff_session: tool({
20763
+ workit_handoff_session: tool({
20764
20764
  description: "Create, seed, and select a continuation session; --stay in the message skips selection",
20765
20765
  args: { message: tool.schema.string() },
20766
20766
  execute: async ({ message: userMessage }, context2) => {
@@ -20860,7 +20860,7 @@ async function postUpdate2(input, operations = defaultOperations) {
20860
20860
  postedComment: false,
20861
20861
  loggedMinutes: 0,
20862
20862
  outcome: "not_applied",
20863
- retry: "workflow_youtrack_post"
20863
+ retry: "workit_youtrack_post"
20864
20864
  });
20865
20865
  unwrap(comment);
20866
20866
  } catch (error45) {
@@ -20886,7 +20886,7 @@ async function postUpdate2(input, operations = defaultOperations) {
20886
20886
  postedComment: true,
20887
20887
  loggedMinutes: 0,
20888
20888
  outcome: "not_applied",
20889
- retry: "workflow_youtrack_log_time"
20889
+ retry: "workit_youtrack_log_time"
20890
20890
  });
20891
20891
  unwrap(time3);
20892
20892
  } catch (error45) {
@@ -20913,7 +20913,7 @@ async function logTimeUpdate(input, operation = defaultOperations) {
20913
20913
  issueId: input.issueId,
20914
20914
  loggedMinutes: 0,
20915
20915
  outcome: "not_applied",
20916
- retry: "workflow_youtrack_log_time"
20916
+ retry: "workit_youtrack_log_time"
20917
20917
  });
20918
20918
  return ok(unwrap(value));
20919
20919
  } catch (error45) {
@@ -20990,13 +20990,13 @@ var rejectedTimeInput = (issueId, minutes) => {
20990
20990
  issueId,
20991
20991
  loggedMinutes: 0,
20992
20992
  outcome: "not_applied",
20993
- retry: "workflow_youtrack_log_time",
20994
- instructions: "Correct the invalid input, then retry workflow_youtrack_log_time once."
20993
+ retry: "workit_youtrack_log_time",
20994
+ instructions: "Correct the invalid input, then retry workit_youtrack_log_time once."
20995
20995
  })) : null;
20996
20996
  };
20997
20997
  function createYouTrackTools(operations = defaultOperations) {
20998
20998
  return {
20999
- workflow_youtrack_verify_token: tool({
20999
+ workit_youtrack_verify_token: tool({
21000
21000
  description: "Verify the configured YouTrack token with a read-only request",
21001
21001
  args: {},
21002
21002
  execute: async () => {
@@ -21012,12 +21012,12 @@ function createYouTrackTools(operations = defaultOperations) {
21012
21012
  return invoke2(() => operations.verifyToken(), token);
21013
21013
  }
21014
21014
  }),
21015
- workflow_youtrack_parse_issue: tool({
21015
+ workit_youtrack_parse_issue: tool({
21016
21016
  description: "Parse an existing YouTrack issue URL or id",
21017
21017
  args: { issue_ref: tool.schema.string() },
21018
21018
  execute: async ({ issue_ref }) => invoke2(() => parseIssueRef(issue_ref))
21019
21019
  }),
21020
- workflow_youtrack_context: tool({
21020
+ workit_youtrack_context: tool({
21021
21021
  description: "Load YouTrack context for the configured meeting issue or an existing task issue",
21022
21022
  args: {
21023
21023
  mode: tool.schema.enum(["meetings", "task"]).optional(),
@@ -21050,12 +21050,12 @@ function createYouTrackTools(operations = defaultOperations) {
21050
21050
  return invoke2(async () => normalizeContext(await operations.context({ ...input, workspace_root: context2.directory }), input.mode), token);
21051
21051
  }
21052
21052
  }),
21053
- workflow_youtrack_parse_duration: tool({
21053
+ workit_youtrack_parse_duration: tool({
21054
21054
  description: "Parse duration text into integer minutes",
21055
21055
  args: { text: tool.schema.string() },
21056
21056
  execute: async ({ text }, context2) => invoke2(() => operations.parseDuration(text, context2.directory))
21057
21057
  }),
21058
- workflow_youtrack_draft: tool({
21058
+ workit_youtrack_draft: tool({
21059
21059
  description: "Build an es-CL update comment without posting it",
21060
21060
  args: {
21061
21061
  issueId: tool.schema.string(),
@@ -21071,7 +21071,7 @@ function createYouTrackTools(operations = defaultOperations) {
21071
21071
  },
21072
21072
  execute: async (input) => invoke2(() => buildDraft(input))
21073
21073
  }),
21074
- workflow_youtrack_log_time: tool({
21074
+ workit_youtrack_log_time: tool({
21075
21075
  description: "Log confirmed time on an existing YouTrack issue without posting a comment",
21076
21076
  args: {
21077
21077
  confirmed: tool.schema.boolean(),
@@ -21100,7 +21100,7 @@ function createYouTrackTools(operations = defaultOperations) {
21100
21100
  return output5(result.ok ? result : { ...result, error: redact(result.error, token) });
21101
21101
  }
21102
21102
  }),
21103
- workflow_youtrack_post: tool({
21103
+ workit_youtrack_post: tool({
21104
21104
  description: "Post a confirmed es-CL comment, then optionally log time",
21105
21105
  args: {
21106
21106
  confirmed: tool.schema.boolean(),
@@ -21230,7 +21230,7 @@ function flowDiagram(spec) {
21230
21230
  var output6 = (value) => JSON.stringify(value, null, 2);
21231
21231
  function createPresentTools() {
21232
21232
  return {
21233
- workflow_present_ascii: tool({
21233
+ workit_present_ascii: tool({
21234
21234
  description: "Render deterministic ASCII UI wireframe from JSON spec",
21235
21235
  args: {
21236
21236
  title: tool.schema.string().optional(),
@@ -21244,7 +21244,7 @@ function createPresentTools() {
21244
21244
  return output6(ok(result.data));
21245
21245
  }
21246
21246
  }),
21247
- workflow_present_flow: tool({
21247
+ workit_present_flow: tool({
21248
21248
  description: "Render mermaid flowchart from JSON nodes/edges",
21249
21249
  args: {
21250
21250
  title: tool.schema.string().optional(),
@@ -21372,7 +21372,7 @@ var promoteSpec = (workspaceRoot, slug, opts) => {
21372
21372
  const workspaceRootCanonical = resolved.layout.workspace;
21373
21373
  const repoPath = docsRepoPath();
21374
21374
  if (!repoPath)
21375
- return { ok: false, error: "docs repo not linked — run workflow_docs_repo_link" };
21375
+ return { ok: false, error: "docs repo not linked — run workit_docs_repo_link" };
21376
21376
  const repoValid = validateDocsRepo(repoPath);
21377
21377
  if (!repoValid.ok)
21378
21378
  return { ok: false, error: repoValid.error };
@@ -21869,7 +21869,7 @@ var migrateLegacyDocs = (input) => {
21869
21869
  var output7 = (value) => JSON.stringify(value, null, 2);
21870
21870
  function createDocsRepoTools() {
21871
21871
  return {
21872
- workflow_docs_layout: tool({
21872
+ workit_docs_layout: tool({
21873
21873
  description: "Canonical docs layout: prepare creates missing docs/ and docs/<slug>/; migrate detects legacy docs/superpowers/ and copies safe pairs after a native Migrate safely / Not now question",
21874
21874
  args: {
21875
21875
  action: tool.schema.enum(["prepare", "migrate"]).optional(),
@@ -21916,7 +21916,7 @@ function createDocsRepoTools() {
21916
21916
  return output7(result.ok ? ok({ layout: result.layout, created: result.created, legacy: result.legacy }) : fail(result.error));
21917
21917
  }
21918
21918
  }),
21919
- workflow_docs_repo_link: tool({
21919
+ workit_docs_repo_link: tool({
21920
21920
  description: "Link the component docs repo in the toolkit config (validates git repo + features/)",
21921
21921
  args: {
21922
21922
  path: tool.schema.string(),
@@ -21927,7 +21927,7 @@ function createDocsRepoTools() {
21927
21927
  return output7(result.ok ? ok({ path: result.path }) : fail(result.error));
21928
21928
  }
21929
21929
  }),
21930
- workflow_docs_list: tool({
21930
+ workit_docs_list: tool({
21931
21931
  description: "List local specs (docs/<slug>/spec.md) with docs-repo promotion status",
21932
21932
  args: {},
21933
21933
  execute: async (_input, context2) => {
@@ -21935,7 +21935,7 @@ function createDocsRepoTools() {
21935
21935
  return output7(ok(result));
21936
21936
  }
21937
21937
  }),
21938
- workflow_docs_promote: tool({
21938
+ workit_docs_promote: tool({
21939
21939
  description: "Promote a spec (+plan) to the linked docs repo features/YYYY-MM-<slug>/ with quality gate",
21940
21940
  args: {
21941
21941
  slug: tool.schema.string(),
@@ -21960,12 +21960,12 @@ function createDocsRepoTools() {
21960
21960
  var output8 = (value) => JSON.stringify(value, null, 2);
21961
21961
  function createTemplateTools() {
21962
21962
  return {
21963
- workflow_template_list: tool({
21963
+ workit_template_list: tool({
21964
21964
  description: "List editable templates (issue-update, greeting, headers) with their source",
21965
21965
  args: {},
21966
21966
  execute: async () => output8(ok({ templates: listTemplates() }))
21967
21967
  }),
21968
- workflow_template_edit: tool({
21968
+ workit_template_edit: tool({
21969
21969
  description: "Write an edited template to the toolkit config dir (agent-assisted)",
21970
21970
  args: {
21971
21971
  name: tool.schema.enum(["issue-update", "greeting", "headers"]),
@@ -21984,12 +21984,12 @@ function createTemplateTools() {
21984
21984
  var output9 = (value) => JSON.stringify(value, null, 2);
21985
21985
  function createRuleTools() {
21986
21986
  return {
21987
- workflow_rule_list: tool({
21987
+ workit_rule_list: tool({
21988
21988
  description: "List canonical rules (config) with platforms and source",
21989
21989
  args: {},
21990
21990
  execute: async () => output9(ok({ rules: listRules() }))
21991
21991
  }),
21992
- workflow_rule_edit: tool({
21992
+ workit_rule_edit: tool({
21993
21993
  description: "Write a canonical rule to the toolkit config dir (agent-assisted)",
21994
21994
  args: {
21995
21995
  name: tool.schema.string(),
@@ -22009,7 +22009,7 @@ function createRuleTools() {
22009
22009
 
22010
22010
  // packages/workit-opencode/src/tools/doctor.ts
22011
22011
  var createDoctorTool = () => ({
22012
- workflow_doctor: tool({
22012
+ workit_doctor: tool({
22013
22013
  description: "Run the offline workit doctor and report installation health",
22014
22014
  args: {},
22015
22015
  execute: async (_input, context2) => JSON.stringify(ok(runDoctor({ host: "opencode", cwd: context2.directory })), null, 2)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainervirus/workit-opencode",
3
- "version": "0.8.9",
3
+ "version": "0.8.10",
4
4
  "private": false,
5
5
  "description": "Workit OpenCode plugin (thin wrapper over @brainervirus/workit-core)",
6
6
  "keywords": [
@@ -34,7 +34,7 @@
34
34
  "typecheck": "tsc --noEmit"
35
35
  },
36
36
  "dependencies": {
37
- "@brainervirus/workit-core": "^0.8.9"
37
+ "@brainervirus/workit-core": "^0.8.10"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@opencode-ai/plugin": "1.17.7"