@brainervirus/workit-cursor 0.8.9 → 0.8.11

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.
@@ -2,7 +2,7 @@
2
2
  "name": "workit",
3
3
  "displayName": "Workit",
4
4
  "description": "OpenCode-style verify, PR, changelog, commit, and session handoff for Cursor",
5
- "version": "0.8.9",
5
+ "version": "0.8.11",
6
6
  "author": {
7
7
  "name": "Cristhofer Pincetti"
8
8
  },
package/README.md CHANGED
@@ -40,7 +40,7 @@ npx @brainervirus/workit-cli init
40
40
 
41
41
  ## What it provides
42
42
 
43
- - MCP server exposing the `workflow_*` tools (branch setup, PR create/context, docs validate/promote, YouTrack post/log/time, templates, rules, presentation, doctor, handoff, and plan lifecycle `workflow_plan_pause`/`resume`/`complete`).
43
+ - MCP server exposing the `workit_*` tools (branch setup, PR create/context, docs validate/promote, YouTrack post/log/time, templates, rules, presentation, doctor, handoff, and plan lifecycle `workit_plan_pause`/`resume`/`complete`).
44
44
  - Session-start contract hook.
45
45
  - 4 rules and 12 `wk-*` skills (plus 14 sanitized Superpowers skills).
46
46
 
@@ -98,7 +98,7 @@ The repository root carries `.cursor-plugin/marketplace.json`, indexing `package
98
98
  - **Installing from Marketplace** — a Marketplace admin adds the repository URL through Cursor's authenticated publisher flow; end users then install the plugin from the Cursor Marketplace UI, which reads `.cursor-plugin/plugin.json` and the tracked components directly from Git.
99
99
  - **Submission** — Marketplace submission is a separate, later authenticated action at `https://cursor.com/marketplace/publish`. It is **not** performed here and no publication or acceptance is claimed; the repository is kept validated and submission-ready.
100
100
  - **Update review** — Git plugin metadata (manifest, rules, skills, assets) is reviewed by Cursor on Marketplace updates, while the npm runtime runs from `@latest` with `--prefer-online`. The selector is shared across `mcp.json`, `hooks-cursor.json`, and `run-cursor-mcp.sh`, and a stale `latest` resolution is prevented by the mandatory `--prefer-online` flag.
101
- - **Troubleshooting** — `workit doctor` (or the `workflow_doctor` tool) reports installation health including runtime, token, VCS/YouTrack, and log-writability checks; it exits nonzero on failure. An MCP/hook startup failure with no network is an `npx`/registry reachability issue, not a Workit defect.
101
+ - **Troubleshooting** — `workit doctor` (or the `workit_doctor` tool) reports installation health including runtime, token, VCS/YouTrack, and log-writability checks; it exits nonzero on failure. An MCP/hook startup failure with no network is an `npx`/registry reachability issue, not a Workit defect.
102
102
 
103
103
  ## Auto-load repair
104
104
 
@@ -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
 
@@ -322,14 +322,14 @@ var REMINDER_TEXT = `<workflow-contract-reminder>
322
322
  - Bounded user choices → call the native \`question\` tool (never A/B/C or 1/2/3 lists in prose).
323
323
  - After a plan is approved → native \`question\` menu with exactly: ${SOURCE_MENU_LABELS_DISPLAY.join(", ")}.
324
324
  - Tools with \`confirmed\` → call them; never fabricate their result.
325
- - 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.
325
+ - 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.
326
326
  - Delivering docs → clickable markdown link \`[spec.md](docs/<slug>/spec.md)\` + 3-5 bullet summary.
327
327
  </workflow-contract-reminder>`;
328
328
  var DESTINATION_REMINDER_TEXT = `<workflow-contract-reminder>
329
329
  - Bounded user choices → call the native \`question\` tool (never A/B/C or 1/2/3 lists in prose).
330
330
  - This session is a handoff destination: present the post-plan menu with exactly: ${DESTINATION_MENU_LABELS.join(", ")}.
331
331
  - Tools with \`confirmed\` → call them; never fabricate their result.
332
- - 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.
332
+ - 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.
333
333
  - Delivering docs → clickable markdown link \`[spec.md](docs/<slug>/spec.md)\` + 3-5 bullet summary.
334
334
  ${HANDOFF_DESTINATION_MARKER}
335
335
  </workflow-contract-reminder>`;
@@ -416,19 +416,19 @@ HARD-GATE: Any user choice with options → call Cursor AskQuestion directly wit
416
416
  </workit-askquestion-hard-gate>
417
417
 
418
418
  <workit-visual-companion>
419
- HARD-GATE: NEVER offer Superpowers visual companion or open a browser tab. For UI wireframes use workflow_present_ascii; for flows use workflow_present_flow. Overrides Superpowers brainstorming visual companion offer.
419
+ HARD-GATE: NEVER offer Superpowers visual companion or open a browser tab. For UI wireframes use workit_present_ascii; for flows use workit_present_flow. Overrides Superpowers brainstorming visual companion offer.
420
420
  </workit-visual-companion>
421
421
 
422
422
  <workit-no-worktrees>
423
- HARD-GATE: NEVER using-git-worktrees or git worktree. In-place feature/* or bugfix/* checkout only via workflow_resolve_branch + workflow_branch_setup. Dirty tree → native AskQuestion before checkout.
423
+ HARD-GATE: NEVER using-git-worktrees or git worktree. In-place feature/* or bugfix/* checkout only via workit_resolve_branch + workit_branch_setup. Dirty tree → native AskQuestion before checkout.
424
424
  </workit-no-worktrees>
425
425
 
426
426
  <workit-sdd-path>
427
- HARD-GATE: NEVER .superpowers/sdd. ALWAYS workflow_sdd_context with plan_path first — resolves canonical docs/<slug>/sdd/ and creates nothing (no empty ledger; progress.md appears only on the first confirmed append). workflow_sdd_task_brief, workflow_sdd_review_package, workflow_sdd_append_progress only.
427
+ HARD-GATE: NEVER .superpowers/sdd. ALWAYS workit_sdd_context with plan_path first — resolves canonical docs/<slug>/sdd/ and creates nothing (no empty ledger; progress.md appears only on the first confirmed append). workit_sdd_task_brief, workit_sdd_review_package, workit_sdd_append_progress only.
428
428
  </workit-sdd-path>
429
429
 
430
430
  <workit-todowrite>
431
- HARD-GATE: After workflow_sdd_context, call Cursor TodoWrite with returned todos (merge: false). SDD ledger is persistence — TodoWrite is the native task list UI. Keep in_progress/completed in sync each task.
431
+ HARD-GATE: After workit_sdd_context, call Cursor TodoWrite with returned todos (merge: false). SDD ledger is persistence — TodoWrite is the native task list UI. Keep in_progress/completed in sync each task.
432
432
  </workit-todowrite>
433
433
 
434
434
  <workit-superpowers-doc-contract>
@@ -20868,7 +20868,7 @@ var resolveBranchPolicyFor = (workspaceRoot) => resolveBranchPolicy(readConfig()
20868
20868
  if (dirty) {
20869
20869
  if (stash !== "yes") {
20870
20870
  return {
20871
- error: "dirty working tree — ask with native question, then call workflow_branch_setup with stash=yes"
20871
+ error: "dirty working tree — ask with native question, then call workit_branch_setup with stash=yes"
20872
20872
  };
20873
20873
  }
20874
20874
  try {
@@ -21621,7 +21621,7 @@ var runGit = (cwd, args) => {
21621
21621
  - Entries should be human-readable and user-facing.
21622
21622
  - Do not use raw commit messages as changelog bullets.
21623
21623
  - MERGE into existing ### Category under [Unreleased] — never append a second ### Added / ### Fixed block.
21624
- - Apply with the native workflow_changelog_apply tool only (not hand-edits under Unreleased).
21624
+ - Apply with the native workit_changelog_apply tool only (not hand-edits under Unreleased).
21625
21625
  - If Unreleased already has duplicate category headings, normalize_only first.`;
21626
21626
  var init_repo_context = __esm(() => {
21627
21627
  init_vcs_config();
@@ -24182,7 +24182,7 @@ function sddContext({
24182
24182
  task_count,
24183
24183
  flow: { spec: flow.spec, plan: flow.plan, menu: flow.menu },
24184
24184
  todowrite_required: true,
24185
- 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."
24185
+ 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."
24186
24186
  };
24187
24187
  }
24188
24188
  function sddTaskBrief({
@@ -24636,7 +24636,7 @@ var COORDINATOR_RECOVERY_TEXT, CURSOR_SUBAGENT_UNSUPPORTED_TEXT, MENU_CHOICES, e
24636
24636
  const file = flowPath(root, slug);
24637
24637
  const rel = path20.posix.join("docs", slug, "sdd", "flow.json");
24638
24638
  if (!existsSync12(file)) {
24639
- return err2("flow_not_activated", `flow not activated for ${slug} — run workflow_flow_status first`);
24639
+ return err2("flow_not_activated", `flow not activated for ${slug} — run workit_flow_status first`);
24640
24640
  }
24641
24641
  let text;
24642
24642
  try {
@@ -25397,13 +25397,13 @@ var COORDINATOR_RECOVERY_TEXT, CURSOR_SUBAGENT_UNSUPPORTED_TEXT, MENU_CHOICES, e
25397
25397
  return effective;
25398
25398
  const state = effective.state;
25399
25399
  if (state.spec.status !== "approved") {
25400
- return err2("spec_not_approved", `spec not approved (status: ${state.spec.status}). Run workflow_spec_approve after the user's approval.`);
25400
+ return err2("spec_not_approved", `spec not approved (status: ${state.spec.status}). Run workit_spec_approve after the user's approval.`);
25401
25401
  }
25402
25402
  if (state.plan.status !== "approved") {
25403
- return err2("plan_not_approved", `plan not approved (status: ${state.plan.status}). Run workflow_plan_approve after the user's approval.`);
25403
+ return err2("plan_not_approved", `plan not approved (status: ${state.plan.status}). Run workit_plan_approve after the user's approval.`);
25404
25404
  }
25405
25405
  if (opts.requireMenu && !state.menu.presented) {
25406
- return err2("menu_not_presented", "post-plan menu not presented. Record the native question answer with workflow_plan_menu.");
25406
+ return err2("menu_not_presented", "post-plan menu not presented. Record the native question answer with workit_plan_menu.");
25407
25407
  }
25408
25408
  if (opts.requireDocs) {
25409
25409
  const validated = docsValidate({
@@ -26054,7 +26054,7 @@ var configPath = () => process.env.WORKFLOW_DOCS_REPO_CONFIG ?? path22.join(conf
26054
26054
  const workspaceRootCanonical = resolved.layout.workspace;
26055
26055
  const repoPath = docsRepoPath();
26056
26056
  if (!repoPath)
26057
- return { ok: false, error: "docs repo not linked — run workflow_docs_repo_link" };
26057
+ return { ok: false, error: "docs repo not linked — run workit_docs_repo_link" };
26058
26058
  const repoValid = validateDocsRepo(repoPath);
26059
26059
  if (!repoValid.ok)
26060
26060
  return { ok: false, error: repoValid.error };
@@ -26985,7 +26985,7 @@ async function postUpdate({
26985
26985
  postedComment: true,
26986
26986
  loggedMinutes: 0,
26987
26987
  error: time3.error,
26988
- retry: "workflow_youtrack_log_time"
26988
+ retry: "workit_youtrack_log_time"
26989
26989
  };
26990
26990
  }
26991
26991
  return { ok: true, issueId, postedComment: true, loggedMinutes: minutes };
@@ -27659,7 +27659,7 @@ var logger, readServerVersion = () => {
27659
27659
  }
27660
27660
  });
27661
27661
  }, changelogCategorySchema, lifecycleTool = (action, description) => {
27662
- registerTool(`workflow_plan_${action}`, {
27662
+ registerTool(`workit_plan_${action}`, {
27663
27663
  description,
27664
27664
  inputSchema: {
27665
27665
  plan_path: exports_external.string(),
@@ -27739,7 +27739,7 @@ var init_server3 = __esm(async () => {
27739
27739
  name: "workit",
27740
27740
  version: VERSION
27741
27741
  });
27742
- registerTool("workflow_verify", {
27742
+ registerTool("workit_verify", {
27743
27743
  description: "Run project validation scripts (verify-project.sh). Defaults to Cursor workspace; pass workspace_root when the target repo differs.",
27744
27744
  inputSchema: {
27745
27745
  dry_run: exports_external.boolean().optional(),
@@ -27756,7 +27756,7 @@ var init_server3 = __esm(async () => {
27756
27756
  workspace_root: cwd
27757
27757
  }));
27758
27758
  });
27759
- registerTool("workflow_doctor", {
27759
+ registerTool("workit_doctor", {
27760
27760
  description: "Run the offline workit doctor and report installation health. Defaults to Cursor workspace; pass workspace_root when the target repo differs.",
27761
27761
  inputSchema: {
27762
27762
  workspace_root: workspaceRootSchema
@@ -27765,7 +27765,7 @@ var init_server3 = __esm(async () => {
27765
27765
  const report = runDoctor({ host: "cursor", cwd: workspace_root });
27766
27766
  return jsonResult(report);
27767
27767
  });
27768
- registerTool("workflow_pr_context", {
27768
+ registerTool("workit_pr_context", {
27769
27769
  description: "Gather PR-ready repository context. On feature/* or bugfix/*, fetches and fast-forwards develop + current branch before diffing against develop.",
27770
27770
  inputSchema: {
27771
27771
  range: exports_external.string().optional(),
@@ -27829,7 +27829,7 @@ var init_server3 = __esm(async () => {
27829
27829
  stderr: stderr || undefined
27830
27830
  }));
27831
27831
  });
27832
- registerTool("workflow_pr_create", {
27832
+ registerTool("workit_pr_create", {
27833
27833
  description: "Create GitLab MR or GitHub PR via glab/gh using vcs.json — requires confirmed: true",
27834
27834
  inputSchema: {
27835
27835
  confirmed: exports_external.boolean(),
@@ -27857,7 +27857,7 @@ var init_server3 = __esm(async () => {
27857
27857
  }
27858
27858
  return jsonResult(withWorkspace(workspace_root, { ...data }));
27859
27859
  });
27860
- registerTool("workflow_changelog_context", {
27860
+ registerTool("workit_changelog_context", {
27861
27861
  description: "Gather changelog update context. Defaults to Cursor workspace; pass workspace_root when the target repo differs.",
27862
27862
  inputSchema: {
27863
27863
  range: exports_external.string().optional(),
@@ -27874,7 +27874,7 @@ var init_server3 = __esm(async () => {
27874
27874
  diff_stat: sections["Diff Stat"] ?? "",
27875
27875
  files: sections["Changed Files"] ?? "",
27876
27876
  unreleased,
27877
- apply_hint: "ALWAYS merge via workflow_changelog_apply — never hand-edit ### Added/Changed/… under [Unreleased].",
27877
+ apply_hint: "ALWAYS merge via workit_changelog_apply — never hand-edit ### Added/Changed/… under [Unreleased].",
27878
27878
  workspace_root: cwd,
27879
27879
  stdout,
27880
27880
  exitCode,
@@ -27889,7 +27889,7 @@ var init_server3 = __esm(async () => {
27889
27889
  "Fixed",
27890
27890
  "Security"
27891
27891
  ]);
27892
- registerTool("workflow_changelog_apply", {
27892
+ registerTool("workit_changelog_apply", {
27893
27893
  description: "Merge Keep a Changelog bullets into ## [Unreleased] under the correct ### category. Collapses duplicate category headings. NEVER append a second ### Added block.",
27894
27894
  inputSchema: {
27895
27895
  entries: exports_external.union([
@@ -27917,7 +27917,7 @@ var init_server3 = __esm(async () => {
27917
27917
  unreleased: changelogUnreleasedStats(workspace_root, changelogPath)
27918
27918
  }));
27919
27919
  });
27920
- registerTool("workflow_release_notes_context", {
27920
+ registerTool("workit_release_notes_context", {
27921
27921
  description: "Gather release notes context. Defaults to Cursor workspace; pass workspace_root when the target repo differs.",
27922
27922
  inputSchema: {
27923
27923
  range_or_tag: exports_external.string().min(1),
@@ -27941,7 +27941,7 @@ var init_server3 = __esm(async () => {
27941
27941
  stderr: stderr || undefined
27942
27942
  }));
27943
27943
  });
27944
- registerTool("workflow_docs_context", {
27944
+ registerTool("workit_docs_context", {
27945
27945
  description: "Gather docs refresh context. Defaults to Cursor workspace; pass workspace_root when the target repo differs.",
27946
27946
  inputSchema: {
27947
27947
  range: exports_external.string().optional(),
@@ -27961,7 +27961,7 @@ var init_server3 = __esm(async () => {
27961
27961
  stderr: stderr || undefined
27962
27962
  }));
27963
27963
  });
27964
- registerTool("workflow_git_context", {
27964
+ registerTool("workit_git_context", {
27965
27965
  description: "Gather git status for commit skill. Defaults to Cursor workspace; pass workspace_root when the target repo differs.",
27966
27966
  inputSchema: {
27967
27967
  paths: exports_external.array(exports_external.string()).optional(),
@@ -27971,7 +27971,7 @@ var init_server3 = __esm(async () => {
27971
27971
  const data = gitContext(workspace_root, paths ?? []);
27972
27972
  return jsonResult(withWorkspace(workspace_root, data));
27973
27973
  });
27974
- registerTool("workflow_resolve_branch", {
27974
+ registerTool("workit_resolve_branch", {
27975
27975
  description: "Resolve feature/* or bugfix/* branch from spec/plan. Returns current_branch, dirty, needs_checkout. No worktrees.",
27976
27976
  inputSchema: {
27977
27977
  spec_path: exports_external.string(),
@@ -27984,7 +27984,7 @@ var init_server3 = __esm(async () => {
27984
27984
  return jsonResult({ error: data.error });
27985
27985
  return jsonResult(withWorkspace(workspace_root, data));
27986
27986
  });
27987
- registerTool("workflow_branch_setup", {
27987
+ registerTool("workit_branch_setup", {
27988
27988
  description: "In-place checkout of feature/* or bugfix/* branch. Stash required when dirty. NEVER uses worktrees.",
27989
27989
  inputSchema: {
27990
27990
  action: exports_external.enum(["setup", "reapply_stash"]).optional(),
@@ -28005,7 +28005,7 @@ var init_server3 = __esm(async () => {
28005
28005
  return jsonResult({ error: data.error });
28006
28006
  return jsonResult(withWorkspace(workspace_root, data));
28007
28007
  });
28008
- registerTool("workflow_sdd_context", {
28008
+ registerTool("workit_sdd_context", {
28009
28009
  description: "Resolve canonical docs/<slug>/sdd/ paths; creates nothing (progress.md appears only on the first confirmed append). NEVER use .superpowers/sdd.",
28010
28010
  inputSchema: {
28011
28011
  slug: exports_external.string().optional(),
@@ -28018,7 +28018,7 @@ var init_server3 = __esm(async () => {
28018
28018
  return jsonResult({ error: data.error });
28019
28019
  return jsonResult(withWorkspace(workspace_root, data));
28020
28020
  });
28021
- registerTool("workflow_sdd_task_brief", {
28021
+ registerTool("workit_sdd_task_brief", {
28022
28022
  description: "Write task-N-brief.md under docs/<slug>/sdd/",
28023
28023
  inputSchema: {
28024
28024
  sdd_dir: exports_external.string(),
@@ -28041,7 +28041,7 @@ var init_server3 = __esm(async () => {
28041
28041
  });
28042
28042
  return jsonResult(withWorkspace(workspace_root, data));
28043
28043
  });
28044
- registerTool("workflow_sdd_review_package", {
28044
+ registerTool("workit_sdd_review_package", {
28045
28045
  description: "Write review diff under SDD dir between base and head SHAs",
28046
28046
  inputSchema: {
28047
28047
  sdd_dir: exports_external.string(),
@@ -28066,7 +28066,7 @@ var init_server3 = __esm(async () => {
28066
28066
  return jsonResult({ error: data.error });
28067
28067
  return jsonResult(withWorkspace(workspace_root, data));
28068
28068
  });
28069
- registerTool("workflow_sdd_append_progress", {
28069
+ registerTool("workit_sdd_append_progress", {
28070
28070
  description: "Append one validated line to docs/<slug>/sdd/progress.md",
28071
28071
  inputSchema: {
28072
28072
  progress_path: exports_external.string(),
@@ -28085,7 +28085,7 @@ var init_server3 = __esm(async () => {
28085
28085
  return jsonResult({ error: data.error });
28086
28086
  return jsonResult(withWorkspace(workspace_root, data));
28087
28087
  });
28088
- registerTool("workflow_sdd_append_advisory", {
28088
+ registerTool("workit_sdd_append_advisory", {
28089
28089
  description: "Append a validated advisory line to docs/<slug>/sdd/advisories.md (coordinator-owned)",
28090
28090
  inputSchema: {
28091
28091
  advisories_path: exports_external.string(),
@@ -28105,7 +28105,7 @@ var init_server3 = __esm(async () => {
28105
28105
  return jsonResult({ error: data.error, code: data.code });
28106
28106
  return jsonResult(withWorkspace(workspace_root, data));
28107
28107
  });
28108
- registerTool("workflow_docs_branch", {
28108
+ registerTool("workit_docs_branch", {
28109
28109
  description: "Resolve branch for spec/plan authors: keep current feature|bugfix or create from the configured base.",
28110
28110
  inputSchema: {
28111
28111
  plan_path: exports_external.string().optional(),
@@ -28118,7 +28118,7 @@ var init_server3 = __esm(async () => {
28118
28118
  return jsonResult(withWorkspace(workspace_root, { error: data.error }));
28119
28119
  return jsonResult(withWorkspace(workspace_root, data));
28120
28120
  });
28121
- registerTool("workflow_docs_layout", {
28121
+ registerTool("workit_docs_layout", {
28122
28122
  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",
28123
28123
  inputSchema: {
28124
28124
  action: exports_external.enum(["prepare", "migrate"]).default("prepare"),
@@ -28162,7 +28162,7 @@ var init_server3 = __esm(async () => {
28162
28162
  return jsonResult(withWorkspace(workspace_root, { error: result.error }));
28163
28163
  return jsonResult(withWorkspace(workspace_root, result));
28164
28164
  });
28165
- registerTool("workflow_docs_validate", {
28165
+ registerTool("workit_docs_validate", {
28166
28166
  description: "Hard-fail validate spec/plan headers, link, branch, task order; returns quality findings (hard/warning). Defaults to Cursor workspace; pass workspace_root when paths are relative to another repo.",
28167
28167
  inputSchema: {
28168
28168
  spec_path: exports_external.string(),
@@ -28176,7 +28176,7 @@ var init_server3 = __esm(async () => {
28176
28176
  }
28177
28177
  return jsonResult(withWorkspace(workspace_root, data));
28178
28178
  });
28179
- registerTool("workflow_plan_tasks", {
28179
+ registerTool("workit_plan_tasks", {
28180
28180
  description: "Parse plan ### Task N sections into structured tasks with section_text. Defaults to Cursor workspace; pass workspace_root when paths are relative to another repo.",
28181
28181
  inputSchema: {
28182
28182
  plan_path: exports_external.string(),
@@ -28200,7 +28200,7 @@ var init_server3 = __esm(async () => {
28200
28200
  }
28201
28201
  return jsonResult(withWorkspace(workspace_root, data));
28202
28202
  });
28203
- registerTool("workflow_handoff_prompt", {
28203
+ registerTool("workit_handoff_prompt", {
28204
28204
  description: "Build copy-paste handoff prompt for next session. Defaults to Cursor workspace; pass workspace_root when spec/plan paths are relative to another repo.",
28205
28205
  inputSchema: {
28206
28206
  message: exports_external.string(),
@@ -28388,7 +28388,7 @@ var init_server3 = __esm(async () => {
28388
28388
  return jsonResult({ error: data.error });
28389
28389
  return jsonResult(data.data);
28390
28390
  });
28391
- registerTool("workflow_youtrack_verify_token", {
28391
+ registerTool("workit_youtrack_verify_token", {
28392
28392
  description: "Read-only YouTrack token test (GET /api/users/me). No work items created.",
28393
28393
  inputSchema: {}
28394
28394
  }, async () => {
@@ -28400,7 +28400,7 @@ var init_server3 = __esm(async () => {
28400
28400
  return jsonResult({ error: data.error ?? "token invalid", ...data });
28401
28401
  return jsonResult(data);
28402
28402
  });
28403
- registerTool("workflow_youtrack_parse_issue", {
28403
+ registerTool("workit_youtrack_parse_issue", {
28404
28404
  description: "Parse YouTrack issue URL or bare id (e.g. NSR-40) into issueId",
28405
28405
  inputSchema: {
28406
28406
  issue_ref: exports_external.string().describe("YouTrack URL or issue id, e.g. https://…/issue/NSR-40 or NSR-40")
@@ -28411,7 +28411,7 @@ var init_server3 = __esm(async () => {
28411
28411
  return jsonResult({ error: data.error });
28412
28412
  return jsonResult(data);
28413
28413
  });
28414
- registerTool("workflow_youtrack_context", {
28414
+ registerTool("workit_youtrack_context", {
28415
28415
  description: "YouTrack config, greeting, issue resolution (from issue_url/id or meetings)",
28416
28416
  inputSchema: {
28417
28417
  mode: exports_external.enum(["meetings", "task"]).optional(),
@@ -28440,7 +28440,7 @@ var init_server3 = __esm(async () => {
28440
28440
  }
28441
28441
  return jsonResult(withWorkspace(workspace_root, data));
28442
28442
  });
28443
- registerTool("workflow_youtrack_parse_duration", {
28443
+ registerTool("workit_youtrack_parse_duration", {
28444
28444
  description: "Parse duration text (e.g. 1h 30m) to integer minutes",
28445
28445
  inputSchema: {
28446
28446
  text: exports_external.string(),
@@ -28452,7 +28452,7 @@ var init_server3 = __esm(async () => {
28452
28452
  return jsonResult({ error: data.error });
28453
28453
  return jsonResult(withWorkspace(workspace_root, data));
28454
28454
  });
28455
- registerTool("workflow_youtrack_log_time", {
28455
+ registerTool("workit_youtrack_log_time", {
28456
28456
  description: "POST YouTrack work item (time only, no comment)",
28457
28457
  inputSchema: {
28458
28458
  issueId: exports_external.string(),
@@ -28473,7 +28473,7 @@ var init_server3 = __esm(async () => {
28473
28473
  return jsonResult({ error: data.error });
28474
28474
  return jsonResult(withWorkspace(workspace_root, data));
28475
28475
  });
28476
- registerTool("workflow_youtrack_draft", {
28476
+ registerTool("workit_youtrack_draft", {
28477
28477
  description: "Build ES-CL comment markdown without posting (envelope only by default)",
28478
28478
  inputSchema: {
28479
28479
  issueId: exports_external.string(),
@@ -28485,7 +28485,7 @@ var init_server3 = __esm(async () => {
28485
28485
  facts: exports_external.record(exports_external.any()).optional()
28486
28486
  }
28487
28487
  }, async (input) => jsonResult(buildDraft(input)));
28488
- registerTool("workflow_youtrack_post", {
28488
+ registerTool("workit_youtrack_post", {
28489
28489
  description: "Post YouTrack comment and optional time — requires confirmed: true",
28490
28490
  inputSchema: {
28491
28491
  confirmed: exports_external.boolean(),
@@ -28506,7 +28506,7 @@ var init_server3 = __esm(async () => {
28506
28506
  return jsonResult({ error: data.error });
28507
28507
  return jsonResult(withWorkspace(workspace_root, data));
28508
28508
  });
28509
- registerTool("workflow_present_ascii", {
28509
+ registerTool("workit_present_ascii", {
28510
28510
  description: "Render deterministic ASCII UI wireframe from JSON spec",
28511
28511
  inputSchema: {
28512
28512
  title: exports_external.string().optional(),
@@ -28519,7 +28519,7 @@ var init_server3 = __esm(async () => {
28519
28519
  return jsonResult({ error: data.error });
28520
28520
  return jsonResult(data.data);
28521
28521
  });
28522
- registerTool("workflow_present_flow", {
28522
+ registerTool("workit_present_flow", {
28523
28523
  description: "Render mermaid flowchart from JSON nodes/edges",
28524
28524
  inputSchema: {
28525
28525
  title: exports_external.string().optional(),
@@ -28541,7 +28541,7 @@ var init_server3 = __esm(async () => {
28541
28541
  return jsonResult({ error: data.error });
28542
28542
  return jsonResult(data.data);
28543
28543
  });
28544
- registerTool("workflow_flow_status", {
28544
+ registerTool("workit_flow_status", {
28545
28545
  description: "Read the spec/plan approval flow state for a workflow; on first read it records flow activation and canonical document paths (FG-01)",
28546
28546
  inputSchema: {
28547
28547
  plan_path: exports_external.string().optional(),
@@ -28577,7 +28577,7 @@ var init_server3 = __esm(async () => {
28577
28577
  flow_path: `docs/${slug}/sdd/flow.json`
28578
28578
  });
28579
28579
  });
28580
- registerTool("workflow_spec_approve", {
28580
+ registerTool("workit_spec_approve", {
28581
28581
  description: "Advance spec status with the Cursor policy-only confirmation: draft -> approved in a single call. The self-review validation runs automatically inside the transition; only the final approval asks for your confirmation. Cursor records attested: false (the MCP cannot observe AskQuestion results); there is no evidence argument (CA-42).",
28582
28582
  inputSchema: {
28583
28583
  spec_path: exports_external.string(),
@@ -28593,7 +28593,7 @@ var init_server3 = __esm(async () => {
28593
28593
  return jsonResult({ error: result.error, code: result.code });
28594
28594
  return jsonResult({ spec: spec_path, status: readFlowState(workspace, slug).spec.status });
28595
28595
  });
28596
- registerTool("workflow_plan_approve", {
28596
+ registerTool("workit_plan_approve", {
28597
28597
  description: "Advance plan status with the Cursor policy-only confirmation: 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. Cursor records attested: false; there is no evidence argument (CA-42).",
28598
28598
  inputSchema: {
28599
28599
  plan_path: exports_external.string(),
@@ -28609,7 +28609,7 @@ var init_server3 = __esm(async () => {
28609
28609
  return jsonResult({ error: result.error, code: result.code });
28610
28610
  return jsonResult({ plan: plan_path, status: readFlowState(workspace, slug).plan.status });
28611
28611
  });
28612
- registerTool("workflow_plan_menu", {
28612
+ registerTool("workit_plan_menu", {
28613
28613
  description: "Record the answered post-plan choice menu with the Cursor policy-only confirmation. subagent-driven is rejected as unsupported on Cursor (CA-42); there is no evidence argument.",
28614
28614
  inputSchema: {
28615
28615
  plan_path: exports_external.string(),
@@ -28629,7 +28629,7 @@ var init_server3 = __esm(async () => {
28629
28629
  lifecycleTool("pause", "Pause a running plan with the Cursor policy-only confirmation: active -> paused. The MCP cannot observe AskQuestion results, so it records attested: false; there is no evidence argument (CA-42). Requires plan_path and workspace_root.");
28630
28630
  lifecycleTool("resume", "Resume a paused plan with the Cursor policy-only confirmation: paused -> active. The MCP cannot observe AskQuestion results, so it records attested: false; there is no evidence argument (CA-42). Requires plan_path and workspace_root.");
28631
28631
  lifecycleTool("complete", "Complete a running plan with the Cursor policy-only confirmation: active/paused -> completed, after the SDD ledger is complete and repository verification passes. The MCP cannot observe AskQuestion results, so it records attested: false; there is no evidence argument (CA-42). Requires plan_path and workspace_root.");
28632
- registerTool("workflow_docs_repo_link", {
28632
+ registerTool("workit_docs_repo_link", {
28633
28633
  description: "Link the component docs repo in the toolkit config",
28634
28634
  inputSchema: {
28635
28635
  path: exports_external.string(),
@@ -28641,11 +28641,11 @@ var init_server3 = __esm(async () => {
28641
28641
  return jsonResult({ error: result.error });
28642
28642
  return jsonResult({ path: result.path });
28643
28643
  });
28644
- registerTool("workflow_docs_list", {
28644
+ registerTool("workit_docs_list", {
28645
28645
  description: "List local specs with docs-repo promotion status",
28646
28646
  inputSchema: { workspace_root: workspaceRootSchema }
28647
28647
  }, async ({ workspace_root }) => jsonResult(listSpecs(workspace_root)));
28648
- registerTool("workflow_docs_promote", {
28648
+ registerTool("workit_docs_promote", {
28649
28649
  description: "Promote a spec (+plan) to the linked docs repo with quality gate",
28650
28650
  inputSchema: {
28651
28651
  slug: exports_external.string(),
@@ -28663,11 +28663,11 @@ var init_server3 = __esm(async () => {
28663
28663
  index_updated: result.index_updated
28664
28664
  });
28665
28665
  });
28666
- registerTool("workflow_template_list", {
28666
+ registerTool("workit_template_list", {
28667
28667
  description: "List editable templates with their source",
28668
28668
  inputSchema: { workspace_root: workspaceRootSchema }
28669
28669
  }, async () => jsonResult({ templates: listTemplates() }));
28670
- registerTool("workflow_template_edit", {
28670
+ registerTool("workit_template_edit", {
28671
28671
  description: "Write an edited template to the toolkit config dir",
28672
28672
  inputSchema: {
28673
28673
  name: exports_external.enum(["issue-update", "greeting", "headers"]),
@@ -28680,11 +28680,11 @@ var init_server3 = __esm(async () => {
28680
28680
  return jsonResult({ error: result.error });
28681
28681
  return jsonResult({ path: result.path });
28682
28682
  });
28683
- registerTool("workflow_rule_list", {
28683
+ registerTool("workit_rule_list", {
28684
28684
  description: "List canonical rules (config) with platforms",
28685
28685
  inputSchema: { workspace_root: workspaceRootSchema }
28686
28686
  }, async () => jsonResult({ rules: listRules() }));
28687
- registerTool("workflow_rule_edit", {
28687
+ registerTool("workit_rule_edit", {
28688
28688
  description: "Write a canonical rule to the toolkit config dir",
28689
28689
  inputSchema: {
28690
28690
  name: exports_external.string(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainervirus/workit-cursor",
3
- "version": "0.8.9",
3
+ "version": "0.8.11",
4
4
  "private": false,
5
5
  "description": "Workit Cursor plugin: MCP server, hooks, rules, marketplace manifest (thin over @brainervirus/workit-core)",
6
6
  "keywords": [
@@ -39,7 +39,7 @@
39
39
  "build": "bun scripts/build.ts"
40
40
  },
41
41
  "dependencies": {
42
- "@brainervirus/workit-core": "^0.8.9",
42
+ "@brainervirus/workit-core": "^0.8.11",
43
43
  "@modelcontextprotocol/sdk": "^1.12.0",
44
44
  "zod": "^3.24.0"
45
45
  },
@@ -37,7 +37,7 @@ One AskQuestion per turn when possible. Open-ended free text (no options) may st
37
37
 
38
38
  After writing a plan, **do not emit** Superpowers' inline text beginning “Two execution options”.
39
39
 
40
- After `workflow_docs_validate` succeeds on the saved spec/plan pair, call Cursor `AskQuestion` with exactly:
40
+ After `workit_docs_validate` succeeds on the saved spec/plan pair, call Cursor `AskQuestion` with exactly:
41
41
 
42
42
  - Subagent-driven → **unsupported on Cursor** (the MCP rejects it as `unsupported_mode`; use OpenCode `wk-implement`)
43
43
  - Inline → execute in this session
@@ -7,8 +7,8 @@ alwaysApply: true
7
7
 
8
8
  When executing a plan / SDD handoff:
9
9
 
10
- 1. MCP `workflow_sdd_context` returns `todos` — call Cursor **TodoWrite** with that array (`merge: false`) before Task 1.
10
+ 1. MCP `workit_sdd_context` returns `todos` — call Cursor **TodoWrite** with that array (`merge: false`) before Task 1.
11
11
  2. SDD under `docs/<slug>/sdd/` is persistence only — **not** a substitute for the Cursor task list UI.
12
- 3. Per task: `in_progress` before dispatch; `completed` after `workflow_sdd_append_progress`.
12
+ 3. Per task: `in_progress` before dispatch; `completed` after `workit_sdd_append_progress`.
13
13
 
14
14
  Never skip TodoWrite because the SDD ledger exists.
@@ -16,10 +16,10 @@ alwaysApply: true
16
16
 
17
17
  ## Required flow (before Task 1)
18
18
 
19
- 1. MCP `workflow_resolve_branch` with spec + plan paths
19
+ 1. MCP `workit_resolve_branch` with spec + plan paths
20
20
  2. If `needs_checkout` and `dirty` → native **AskQuestion** asks whether to stash before checkout
21
- 3. MCP `workflow_branch_setup` with `target_branch` and `stash: yes|no`
22
- 4. After all tasks, if manifest has `stash_ref` → AskQuestion → `workflow_branch_setup` action=`reapply_stash`
21
+ 3. MCP `workit_branch_setup` with `target_branch` and `stash: yes|no`
22
+ 4. After all tasks, if manifest has `stash_ref` → AskQuestion → `workit_branch_setup` action=`reapply_stash`
23
23
 
24
24
  ## Tools only
25
25
 
@@ -9,9 +9,9 @@ alwaysApply: true
9
9
 
10
10
  ## Required
11
11
 
12
- 1. MCP `workflow_sdd_context` with `plan_path` — **always**, including fresh projects
12
+ 1. MCP `workit_sdd_context` with `plan_path` — **always**, including fresh projects
13
13
  2. Use returned `sdd_dir` (`docs/<slug>/sdd/`) for all SDD artifacts
14
- 3. `workflow_sdd_task_brief`, `workflow_sdd_review_package`, `workflow_sdd_append_progress` — never Superpowers `sdd-workspace` script
14
+ 3. `workit_sdd_task_brief`, `workit_sdd_review_package`, `workit_sdd_append_progress` — never Superpowers `sdd-workspace` script
15
15
 
16
16
  ## Forbidden
17
17
 
@@ -19,4 +19,4 @@ alwaysApply: true
19
19
  - `cat .superpowers/sdd/progress.md` — missing file there does NOT mean "start fresh"
20
20
  - Superpowers `task-brief` / `review-package` scripts under `.agents/skills/`
21
21
 
22
- Fresh project with no ledger → `workflow_sdd_context` creates nothing; `progress.md` appears only on the first confirmed `workflow_sdd_append_progress`.
22
+ Fresh project with no ledger → `workit_sdd_context` creates nothing; `progress.md` appears only on the first confirmed `workit_sdd_append_progress`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wk-changelog
3
- description: Update CHANGELOG.md via workflow_changelog_context + workflow_changelog_apply. Use for /wk-changelog or "update the changelog".
3
+ description: Update CHANGELOG.md via workit_changelog_context + workit_changelog_apply. Use for /wk-changelog or "update the changelog".
4
4
  ---
5
5
 
6
6
  # Changelog — Keep a Changelog Update
@@ -9,14 +9,14 @@ Update `CHANGELOG.md` for the current repository.
9
9
 
10
10
  ## Step 1 — Gather facts (required)
11
11
 
12
- Call MCP tool `workflow_changelog_context` with arguments from the user's message (range, version, paths, etc.).
12
+ Call MCP tool `workit_changelog_context` with arguments from the user's message (range, version, paths, etc.).
13
13
 
14
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
14
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
15
15
 
16
16
  Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
17
17
  If the tool errors, report the error and stop.
18
18
 
19
- If `unreleased.needs_normalize` is true, call `workflow_changelog_apply` with `normalize_only: true` before merging new bullets.
19
+ If `unreleased.needs_normalize` is true, call `workit_changelog_apply` with `normalize_only: true` before merging new bullets.
20
20
 
21
21
  ## Step 2 — Decide entries (do not edit the file yet)
22
22
 
@@ -31,7 +31,7 @@ Follow Keep a Changelog 1.1.0:
31
31
 
32
32
  ## Step 3 — Apply via tool (required)
33
33
 
34
- Call MCP `workflow_changelog_apply` with the new bullets. Examples:
34
+ Call MCP `workit_changelog_apply` with the new bullets. Examples:
35
35
 
36
36
  ```json
37
37
  {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wk-commit
3
- description: Structured local commits via workflow_git_context. Use for /wk-commit or "use commit skill" only — not casual "ship it".
3
+ description: Structured local commits via workit_git_context. Use for /wk-commit or "use commit skill" only — not casual "ship it".
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
@@ -8,9 +8,9 @@ disable-model-invocation: true
8
8
 
9
9
  ## Step 1 — Gather facts (required)
10
10
 
11
- Call MCP tool `workflow_git_context` with arguments from the user's message (paths after `/wk-commit`, etc.).
11
+ Call MCP tool `workit_git_context` with arguments from the user's message (paths after `/wk-commit`, etc.).
12
12
 
13
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
13
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
14
14
 
15
15
  Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
16
16
  If the tool errors, report the error and stop.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wk-docs-refresh
3
- description: Refresh stale README and docs via workflow_docs_context. Use for /wk-docs-refresh or "refresh readme/docs".
3
+ description: Refresh stale README and docs via workit_docs_context. Use for /wk-docs-refresh or "refresh readme/docs".
4
4
  ---
5
5
 
6
6
  # Docs Refresh — Documentation Refresh
@@ -9,9 +9,9 @@ Inspect current changes and refresh stale documentation.
9
9
 
10
10
  ## Step 1 — Gather facts (required)
11
11
 
12
- Call MCP tool `workflow_docs_context` with arguments from the user's message (range, version, paths, etc.).
12
+ Call MCP tool `workit_docs_context` with arguments from the user's message (range, version, paths, etc.).
13
13
 
14
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
14
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
15
15
 
16
16
  Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
17
17
  If the tool errors, report the error and stop.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wk-handoff
3
- description: Emit copy-paste implementation prompt for a new chat via workflow_handoff_prompt. Explicit /wk-handoff only.
3
+ description: Emit copy-paste implementation prompt for a new chat via workit_handoff_prompt. Explicit /wk-handoff only.
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
@@ -10,20 +10,20 @@ Emit a copy-paste prompt for a **new** implementation chat.
10
10
 
11
11
  ## Step 1 — Gather facts (required)
12
12
 
13
- Call MCP tool `workflow_handoff_prompt` with the **full** user message as `message`.
13
+ Call MCP tool `workit_handoff_prompt` with the **full** user message as `message`.
14
14
 
15
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
15
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
16
16
 
17
17
  **Thread context:** If this thread has a known spec/plan pair (from brainstorming, writing-plans, or open files), append both paths to `message` even when the user only typed `/wk-handoff`. Without explicit paths, the tool picks the **most recently touched** linked pair under `docs/<slug>/` (plan `**Spec:**` link + file mtimes) — not “only one file in the folder.”
18
18
 
19
19
  Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
20
20
  If the tool errors, report the error and stop.
21
21
 
22
- The pasted prompt includes instructions to call `workflow_sdd_context`, **Cursor TodoWrite** (with returned `todos`), and `workflow_plan_tasks` in Chat B before Task 1. SDD artifacts go to `docs/<slug>/sdd/` — never `.superpowers/sdd`. TodoWrite is required for the native Cursor task list UI (remaining/completed); the SDD ledger is persistence only. The fenced `prompt` does not contain `section_text`. **Branch** is resolved automatically in the prompt (from spec/plan or derived as `feature/*` / `bugfix/*`). **No worktrees** — Chat B uses `workflow_resolve_branch` + `workflow_branch_setup` in-place. Commits use workit **/wk-commit** skill — no separate commit-policy field.
22
+ The pasted prompt includes instructions to call `workit_sdd_context`, **Cursor TodoWrite** (with returned `todos`), and `workit_plan_tasks` in Chat B before Task 1. SDD artifacts go to `docs/<slug>/sdd/` — never `.superpowers/sdd`. TodoWrite is required for the native Cursor task list UI (remaining/completed); the SDD ledger is persistence only. The fenced `prompt` does not contain `section_text`. **Branch** is resolved automatically in the prompt (from spec/plan or derived as `feature/*` / `bugfix/*`). **No worktrees** — Chat B uses `workit_resolve_branch` + `workit_branch_setup` in-place. Commits use workit **/wk-commit** skill — no separate commit-policy field.
23
23
 
24
- `workflow_handoff_prompt` also returns `tasks[]`, `branch`, `sdd_dir`, `completed_task_ids`, and `todos` for same-session MCP use — not copy-paste transport.
24
+ `workit_handoff_prompt` also returns `tasks[]`, `branch`, `sdd_dir`, `completed_task_ids`, and `todos` for same-session MCP use — not copy-paste transport.
25
25
 
26
- A destination run that executes the plan must still end with `workflow_plan_complete` once the SDD ledger is complete and repository verification passes, and never finish the run while the plan is still `active`.
26
+ A destination run that executes the plan must still end with `workit_plan_complete` once the SDD ledger is complete and repository verification passes, and never finish the run while the plan is still `active`.
27
27
 
28
28
  ## Output (success)
29
29
 
@@ -10,9 +10,9 @@ Execute the plan **inline in this coordinator session**. subagent-driven executi
10
10
 
11
11
  ## Step 1 — Gather facts (required)
12
12
 
13
- Call MCP tool `workflow_plan_tasks` with `plan_path` from the user's message and `spec_path` when known.
13
+ Call MCP tool `workit_plan_tasks` with `plan_path` from the user's message and `spec_path` when known.
14
14
 
15
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
15
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
16
16
 
17
17
  Use the returned `tasks[]` as ground truth. Cache each `section_text` for subagent prompts. Do not read the plan file for task text.
18
18
 
@@ -20,7 +20,7 @@ Use the returned `tasks[]` as ground truth. Cache each `section_text` for subage
20
20
 
21
21
  Resolve plugin root: `WORKFLOW_TOOLKIT_ROOT` env or `~/.cursor/plugins/local/workit/`.
22
22
 
23
- Load `templates/execution-contract.md`. Substitute `<SPEC_PATH>`, `<PLAN_PATH>`, `<BRANCH>`, `<SDD_DIR>`, `<TASK_LIST>` from MCP. OMIT the `## Handoff destination` section and its `<workflow-handoff-destination>` marker line — that section is only for sessions started from a `workflow_handoff_prompt` destination prompt. This inline executor is NOT a destination and must never present itself as one (five-choice source menu, Handoff still available). If template missing, stop with error.
23
+ Load `templates/execution-contract.md`. Substitute `<SPEC_PATH>`, `<PLAN_PATH>`, `<BRANCH>`, `<SDD_DIR>`, `<TASK_LIST>` from MCP. OMIT the `## Handoff destination` section and its `<workflow-handoff-destination>` marker line — that section is only for sessions started from a `workit_handoff_prompt` destination prompt. This inline executor is NOT a destination and must never present itself as one (five-choice source menu, Handoff still available). If template missing, stop with error.
24
24
 
25
25
  ## Step 3 — Follow contract
26
26
 
@@ -28,17 +28,17 @@ Announce: "Using implement + inline."
28
28
 
29
29
  **Before Task 1 — validate + SDD + TodoWrite UI + branch (no worktrees):**
30
30
 
31
- 0. `workflow_docs_validate` with spec + plan paths — hard-fail before any SDD mutation
32
- 1. `workflow_sdd_context` with `plan_path` — cache `sdd_dir`, `completed_task_ids`, **`todos`**
31
+ 0. `workit_docs_validate` with spec + plan paths — hard-fail before any SDD mutation
32
+ 1. `workit_sdd_context` with `plan_path` — cache `sdd_dir`, `completed_task_ids`, **`todos`**
33
33
  2. **TodoWrite** with `todos` from step 1 (`merge: false`) — required for Cursor native task list UI (SDD is not a UI substitute)
34
- 3. `workflow_resolve_branch` with spec + plan paths
34
+ 3. `workit_resolve_branch` with spec + plan paths
35
35
  4. If `needs_checkout` and `dirty` → native **AskQuestion** asks whether to stash before checkout
36
- 5. `workflow_branch_setup` with `target_branch`, `stash`, `sdd_dir` from step 1
36
+ 5. `workit_branch_setup` with `target_branch`, `stash`, `sdd_dir` from step 1
37
37
 
38
- Follow the contract verbatim. Keep TodoWrite `in_progress`/`completed` in sync each task. At verify/commit phase use `workflow_verify` and `workflow_git_context` MCP tools.
38
+ Follow the contract verbatim. Keep TodoWrite `in_progress`/`completed` in sync each task. At verify/commit phase use `workit_verify` and `workit_git_context` MCP tools.
39
39
 
40
40
  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.
41
41
 
42
42
  Do not emit a handoff fence — this is in-session execution.
43
43
 
44
- **Mandatory:** end the run by calling MCP `workflow_plan_complete` 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`.
44
+ **Mandatory:** end the run by calling MCP `workit_plan_complete` 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`.
@@ -14,7 +14,7 @@ Post a Spanish comment and log time on a **task** issue (not the meeting issue).
14
14
 
15
15
  **Audience:** @Alejandra.Flores — not a developer. Clarify technical terms in plain language when they appear.
16
16
 
17
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
17
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
18
18
 
19
19
  ## Step 0 — Toolkit ready
20
20
 
@@ -27,12 +27,12 @@ If unsure, call `workit_status`. Stop if `ready: false`.
27
27
  1. If the user did **not** already paste a YouTrack URL or issue id (`NSR-40`) in the message that started this flow, ask:
28
28
  > Paste the YouTrack issue URL or id for this update (e.g. `https://…/issue/NSR-40` or `NSR-40`).
29
29
  2. Wait for their reply. Do **not** guess from spec/plan unless they explicitly say to use the plan's issue.
30
- 3. Call `workflow_youtrack_parse_issue` with `issue_ref` = what they pasted.
30
+ 3. Call `workit_youtrack_parse_issue` with `issue_ref` = what they pasted.
31
31
  4. On error, ask again with the parse error. On success, note `issueId`.
32
32
 
33
33
  ## Step 2 — Context (required)
34
34
 
35
- Call `workflow_youtrack_context` with `issue_id` from Step 1 (or `issue_url` / `issue_ref` directly). Stop on error.
35
+ Call `workit_youtrack_context` with `issue_id` from Step 1 (or `issue_url` / `issue_ref` directly). Stop on error.
36
36
 
37
37
  Show the resolved issue once in chat: `Updating **{issueId}**` (+ `issueUrl` if returned).
38
38
 
@@ -46,7 +46,7 @@ Ask user to paste rough notes, half-written update, or bullets. Skip to Step 5.
46
46
 
47
47
  ### Mode `remind` — Help me remember
48
48
 
49
- 1. Optionally call `workflow_git_context` (and read spec/plan title) **only to remind the user in English chat** — short prose: what repo, branch, themes of commits, not a pasteable comment.
49
+ 1. Optionally call `workit_git_context` (and read spec/plan title) **only to remind the user in English chat** — short prose: what repo, branch, themes of commits, not a pasteable comment.
50
50
  2. Ask conversational follow-ups: *¿Qué te costó más? ¿Qué queda para mañana? ¿Algo bloqueado?*
51
51
  3. User replies in their words (Spanish messy notes OK).
52
52
  4. Treat their reply as the draft → Step 5.
@@ -55,14 +55,14 @@ Ask user to paste rough notes, half-written update, or bullets. Skip to Step 5.
55
55
 
56
56
  ### Mode `auto` — Draft for me to edit
57
57
 
58
- 1. Use `workflow_git_context` + conversation context to infer what they likely worked on.
58
+ 1. Use `workit_git_context` + conversation context to infer what they likely worked on.
59
59
  2. Write a **first draft in Spanish** per **youtrack-update-style.md** (paragraphs, manager-friendly, no file paths).
60
60
  3. Show draft in a fenced block. Ask user to correct, add, or replace — user may reply with a full rewrite.
61
61
  4. Use their corrected version as input → Step 5.
62
62
 
63
63
  ## Step 4 — Duration
64
64
 
65
- Ask time spent on this task issue. User text → `workflow_youtrack_parse_duration`. **Do not compute minutes yourself.**
65
+ Ask time spent on this task issue. User text → `workit_youtrack_parse_duration`. **Do not compute minutes yourself.**
66
66
 
67
67
  ## Step 5 — Polish (ChatGPT pass)
68
68
 
@@ -73,7 +73,7 @@ Polish the approved draft per **youtrack-update-style.md**:
73
73
  - Keep `# Actualización` + greeting — if user already included them, do not duplicate `@Alejandra.Flores`
74
74
  - `## Off-topic` only if user's material has a clear tangent section
75
75
 
76
- Call `workflow_youtrack_draft` with:
76
+ Call `workit_youtrack_draft` with:
77
77
 
78
78
  - `issueId` from Step 1
79
79
  - `userNotes` = polished **body only** (no `# Actualización`, no greeting line)
@@ -88,9 +88,9 @@ Show returned `markdown` in a fenced block. User may edit in chat (apply edits a
88
88
 
89
89
  Use native `AskQuestion`: title `Post to YouTrack`; prompt `Post this reviewed update to YouTrack and log the approved time?`; options `Post and log time` and `Cancel`. On confirm:
90
90
 
91
- `workflow_youtrack_post` with `confirmed: true`, `issueId`, `markdown`, `minutes`. **Do not pass `date`.**
91
+ `workit_youtrack_post` with `confirmed: true`, `issueId`, `markdown`, `minutes`. **Do not pass `date`.**
92
92
 
93
- If the result has `partial: true`, the comment already posted. Report the time-log failure and retry only with `workflow_youtrack_log_time` using the same `issueId` and `minutes`; never call `workflow_youtrack_post` again.
93
+ If the result has `partial: true`, the comment already posted. Report the time-log failure and retry only with `workit_youtrack_log_time` using the same `issueId` and `minutes`; never call `workit_youtrack_post` again.
94
94
 
95
95
  ## Rules
96
96
 
@@ -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
 
@@ -16,7 +16,7 @@ If unsure, call `workit_status`. Stop if `ready: false`.
16
16
 
17
17
  ## Step 1 — Context (required)
18
18
 
19
- Call MCP `workflow_youtrack_context` with `mode: "meetings"` (no `issue_id` yet). Stop on error.
19
+ Call MCP `workit_youtrack_context` with `mode: "meetings"` (no `issue_id` yet). Stop on error.
20
20
 
21
21
  ## Step 2 — Pick meeting type (required)
22
22
 
@@ -30,7 +30,7 @@ Use native **AskQuestion** with `meetingOptions` from context:
30
30
 
31
31
  ## Step 3 — Duration
32
32
 
33
- Ask how much meeting time today (English UI). User text → `workflow_youtrack_parse_duration`. **Do not compute minutes yourself.**
33
+ Ask how much meeting time today (English UI). User text → `workit_youtrack_parse_duration`. **Do not compute minutes yourself.**
34
34
 
35
35
  ## Step 4 — Preview + confirm
36
36
 
@@ -40,9 +40,9 @@ Use native **AskQuestion** to confirm logging the shown meeting time; on yes:
40
40
 
41
41
  ## Step 5 — Log time only
42
42
 
43
- Call `workflow_youtrack_log_time` with `issueId`, `minutes`, `text` (from `workItemText`). **Do not pass `date`** — tool uses epoch ms automatically.
43
+ Call `workit_youtrack_log_time` with `issueId`, `minutes`, `text` (from `workItemText`). **Do not pass `date`** — tool uses epoch ms automatically.
44
44
 
45
- **Never** call `workflow_youtrack_post` from this skill.
45
+ **Never** call `workit_youtrack_post` from this skill.
46
46
 
47
47
  ## Rules
48
48
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wk-pr
3
- description: Draft or create PR/MR via workflow_pr_context + glab/gh. Squash on merge + delete source branch. Use /wk-pr.
3
+ description: Draft or create PR/MR via workit_pr_context + glab/gh. Squash on merge + delete source branch. Use /wk-pr.
4
4
  ---
5
5
 
6
6
  # PR — Draft or Create
@@ -9,13 +9,13 @@ Draft a merge request / pull request body, or create it on GitLab (`glab`) / Git
9
9
 
10
10
  **Setup:** `/wk-init` → pick provider → VCS scaffold → edit active token file.
11
11
 
12
- **Active provider:** read `vcs_config.provider` from `workflow_pr_context` (or `provider` in `~/.config/workit/vcs.json`). That decides `glab` vs `gh`.
12
+ **Active provider:** read `vcs_config.provider` from `workit_pr_context` (or `provider` in `~/.config/workit/vcs.json`). That decides `glab` vs `gh`.
13
13
 
14
14
  ## Step 1 — Gather facts (required)
15
15
 
16
- Call MCP `workflow_pr_context` with **no `range` argument** unless the user supplied an explicit git range string.
16
+ Call MCP `workit_pr_context` with **no `range` argument** unless the user supplied an explicit git range string.
17
17
 
18
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
18
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
19
19
 
20
20
  On `feature/*` or `bugfix/*`, the tool compares **only against `develop`** (never `main`).
21
21
 
@@ -62,9 +62,9 @@ Body:
62
62
 
63
63
  Use native `AskQuestion`: title `Create MR/PR`; prompt `Create the reviewed MR/PR now?`; options `Create` and `Cancel`. On `Create`:
64
64
 
65
- `workflow_pr_create` with `confirmed: true`, `title`, `body`, optional `target_branch` (defaults from vcs.json).
65
+ `workit_pr_create` with `confirmed: true`, `title`, `body`, optional `target_branch` (defaults from vcs.json).
66
66
 
67
- **On failure:** show the tool `error` / `stderr` / `hint` and stop. **Never** fall back to running `glab` or `gh` in the shell — creation must go through `workflow_pr_create` only.
67
+ **On failure:** show the tool `error` / `stderr` / `hint` and stop. **Never** fall back to running `glab` or `gh` in the shell — creation must go through `workit_pr_create` only.
68
68
 
69
69
  Creation uses vcs.json flags (both default `true`):
70
70
 
@@ -86,5 +86,5 @@ GitHub: use **Squash and merge** + **Delete branch** in the UI (or `gh pr merge
86
86
 
87
87
  - Do not edit product files in this skill (except user asks to fix PR template).
88
88
  - Never paste VCS tokens in chat.
89
- - **Never run `glab` or `gh` directly** — only `workflow_pr_create`.
89
+ - **Never run `glab` or `gh` directly** — only `workit_pr_create`.
90
90
  - Do not claim validation passed unless evidence exists.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wk-release-notes
3
- description: Draft release notes via workflow_release_notes_context. Use for /wk-release-notes or "draft release notes".
3
+ description: Draft release notes via workit_release_notes_context. Use for /wk-release-notes or "draft release notes".
4
4
  ---
5
5
 
6
6
  # Release Notes — User-Facing Release Notes
@@ -11,9 +11,9 @@ Draft release notes for a given release, version, tag, or commit range.
11
11
 
12
12
  If the user did not provide an exact tag, version, or commit range, ask for it before calling the tool.
13
13
 
14
- Call MCP tool `workflow_release_notes_context` with arguments from the user's message (range, version, paths, etc.).
14
+ Call MCP tool `workit_release_notes_context` with arguments from the user's message (range, version, paths, etc.).
15
15
 
16
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
16
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
17
17
 
18
18
  Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
19
19
  If the tool errors, report the error and stop.
@@ -82,4 +82,4 @@ Use `items[youtrack_token].token_create_url` / `token_edit_path`, or top-level `
82
82
 
83
83
  - Do not call YouTrack HTTP directly — `workit_status` includes verify.
84
84
  - Do not ask user to paste token — point them to edit the token file if `placeholder: true`.
85
- - Optional: `workflow_youtrack_verify_token` only if user asks to re-test API alone.
85
+ - Optional: `workit_youtrack_verify_token` only if user asks to re-test API alone.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wk-verify
3
- description: Run project validation via workflow_verify MCP tool. Use for /wk-verify or when user says "use verify skill".
3
+ description: Run project validation via workit_verify MCP tool. Use for /wk-verify or when user says "use verify skill".
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
@@ -10,9 +10,9 @@ Run the repository's validation checks and report exact results.
10
10
 
11
11
  ## Step 1 — Gather facts (required)
12
12
 
13
- Call MCP tool `workflow_verify` with arguments from the user's message (range, version, paths, etc.).
13
+ Call MCP tool `workit_verify` with arguments from the user's message (range, version, paths, etc.).
14
14
 
15
- **Repository calls:** For every repository-scoped `workflow_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
15
+ **Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
16
16
 
17
17
  Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
18
18
  If the tool errors, report the error and stop.
@@ -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