@brainervirus/workit-cursor 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: wk-handoff
3
+ description: Emit copy-paste implementation prompt for a new chat via workflow_handoff_prompt. Explicit /wk-handoff only.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Handoff
8
+
9
+ Emit a copy-paste prompt for a **new** implementation chat.
10
+
11
+ ## Step 1 — Gather facts (required)
12
+
13
+ Call MCP tool `workflow_handoff_prompt` with the **full** user message as `message`.
14
+
15
+ **Workspace root:** defaults to the Cursor workspace. Pass `workspace_root` when spec/plan paths are relative to a different repository.
16
+
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
+
19
+ Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
20
+ If the tool errors, report the error and stop.
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/<plan-basename>/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.
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.
25
+
26
+ ## Output (success)
27
+
28
+ When the tool returns `{ prompt }`, output **only** one fenced code block containing `prompt` verbatim. No preamble, no explanation outside the fence.
29
+
30
+ ## Output (failure)
31
+
32
+ When the tool returns `{ error }` (and optional `candidates`):
33
+
34
+ - Plain text only — **no fenced block**
35
+ - State the error clearly
36
+ - If multiple specs or plans exist, list candidate paths from `candidates`
37
+ - Instruct the user to re-run with explicit paths in the message:
38
+
39
+ ```text
40
+ /wk-handoff
41
+ docs/my-feature/spec.md
42
+ docs/my-feature/plan.md
43
+ ```
44
+
45
+ Example:
46
+
47
+ ```text
48
+ Could not resolve spec and plan. Mention both paths in your message, or ensure the newest plan links to its spec via **Spec:**.
49
+ Re-run with paths from this thread, e.g.:
50
+ /wk-handoff
51
+ docs/<slug>/spec.md
52
+ docs/<slug>/plan.md
53
+ ```
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: wk-implement
3
+ description: Execute a Superpowers plan as SDD coordinator with subagent-per-task and mandatory review loops. Use for /wk-implement or "implement from plan using subagent-driven-development".
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Implement
8
+
9
+ Execute a plan as **coordinator only** (subagent-driven-development). Do not edit product code in this thread.
10
+
11
+ ## Step 1 — Gather facts (required)
12
+
13
+ Call MCP tool `workflow_plan_tasks` with `plan_path` from the user's message and `spec_path` when known.
14
+
15
+ **Workspace root:** defaults to the Cursor workspace. Pass `workspace_root` when plan/spec paths are relative to a different repository.
16
+
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
+
19
+ ## Step 2 — Load execution contract
20
+
21
+ Resolve plugin root: `WORKFLOW_TOOLKIT_ROOT` env or `~/.cursor/plugins/local/workflow-toolkit/`.
22
+
23
+ Load `templates/execution-contract.md`. Substitute `<SPEC_PATH>`, `<PLAN_PATH>`, `<BRANCH>`, `<SDD_DIR>`, `<TASK_LIST>` from MCP. If template missing, stop with error.
24
+
25
+ ## Step 3 — Follow contract
26
+
27
+ Announce: "Using implement + subagent-driven-development."
28
+
29
+ **Before Task 1 — validate + SDD + TodoWrite UI + branch (no worktrees):**
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`**
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
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
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.
39
+
40
+ Do not emit a handoff fence — this is in-session execution.
@@ -0,0 +1,107 @@
1
+ ---
2
+ name: wk-init
3
+ description: One-time workit setup — MCP deps, YouTrack, and VCS (GitLab/GitHub) config. Tokens edited locally only. Use /wk-init.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Init
8
+
9
+ Scaffold config via MCP. **Never paste API tokens in chat.**
10
+
11
+ **Agent language:** English unless the user writes in another language.
12
+
13
+ ## Step 1 — Status (required)
14
+
15
+ Call MCP `workflow_toolkit_init_status`. Show `items[]` in English.
16
+
17
+ ### YouTrack settings (when `youtrack_config` present)
18
+
19
+ | Setting | Value |
20
+ |---------|-------|
21
+ | Config file | clickable `config_edit_path` |
22
+ | Base URL | `baseUrl` |
23
+ | Meeting issue | `meetingIssue` + `meetingIssueUrl` |
24
+ | Manager mention | `defaultMention` |
25
+ | Timezone / locale | `timezone` / `locale` |
26
+ | Meeting time | `/wk-meetings` |
27
+ | Task updates | `/wk-issue-update` |
28
+
29
+ ### VCS / PR settings (when `vcs_config` present)
30
+
31
+ | Setting | Value |
32
+ |---------|-------|
33
+ | Config file | `config_edit_path` → `vcs.json` |
34
+ | Provider | `provider` (`gitlab` or `github`) |
35
+ | Target branch | `defaultTargetBranch` (usually `develop`) |
36
+ | PR skill | `/wk-pr` |
37
+ | Squash on merge | `pr.squashOnMerge` |
38
+ | Remove source branch | `pr.removeSourceBranch` (default `true`) |
39
+ | Switch provider | `switchHint` |
40
+
41
+ ## Step 2 — Apply missing pieces
42
+
43
+ ### mcp_deps
44
+
45
+ Native `AskQuestion` asks whether to install MCP dependencies → on yes: `workflow_toolkit_init_apply` action=`npm_install` confirmed=`true`
46
+
47
+ ### YouTrack scaffold
48
+
49
+ Native `AskQuestion` asks whether to create the YouTrack scaffold → on yes: `workflow_toolkit_init_apply` action=`youtrack_scaffold` confirmed=`true`
50
+
51
+ ### VCS scaffold (GitLab + GitHub token files)
52
+
53
+ Only when `items[vcs_json].ok` is **false**:
54
+
55
+ 1. Native `AskQuestion` asks for GitLab or GitHub → remember `provider` (`gitlab` | `github`).
56
+ 2. Native `AskQuestion` asks `Create vcs.json and token placeholders for <provider>?`
57
+ → on yes: `workflow_toolkit_init_apply` action=`vcs_scaffold` confirmed=`true` **`vcs_provider=<chosen provider>`**
58
+
59
+ Both `gitlab.token` and `github.token` are always created (switch later by editing `provider` in `vcs.json`). Tell the user which token file is **active** for `/wk-pr` based on the chosen provider.
60
+
61
+ Optional: `vcs_target_branch` if user states a non-`develop` default.
62
+
63
+ ## Step 3 — User edits tokens (outside chat)
64
+
65
+ ### YouTrack
66
+
67
+ Show from `youtrack_config.tokenCreate` or `items[youtrack_token]`:
68
+
69
+ | Field | Source |
70
+ |-------|--------|
71
+ | Create token (click) | `token_create_url` — opens Profile → **Account Security** (Tokens section) |
72
+ | Paste token into | `token_edit_path` on `youtrack_token` item |
73
+ | Prefilled name | `token_name` → `workit` |
74
+ | Scope | `token_scopes` → `YouTrack` only |
75
+
76
+ YouTrack does **not** support URL prefill for name/scopes — after the link opens, click **New token** and enter name + scope manually (`token_create_steps` if present).
77
+
78
+ 1. [Create YouTrack token](<token_create_url>) → **New token** → name **workit**, scope **YouTrack** → **Create token**
79
+ 2. Copy token → open [youtrack.token](<token_edit_path>) → replace `YOUR_TOKEN_HERE` → save
80
+ 3. **`/wk-status`**
81
+
82
+ ### VCS (active provider)
83
+
84
+ For the **active** provider (`vcs_config.provider`), show from `vcs_config.tokenCreate` or `items[gitlab_token|github_token].token_create_url`:
85
+
86
+ | Field | Source |
87
+ |-------|--------|
88
+ | Create token (click) | `token_create_url` — opens provider form with **name**, **description**, and **scopes/permissions** prefilled |
89
+ | GitHub classic fallback | `token_create_url_classic` on `github_token` item only |
90
+ | Paste token into | `token_edit_path` on the active provider item |
91
+ | Prefilled name | `workit` |
92
+ | GitLab scopes | `api` |
93
+ | GitHub permissions | `pull_requests:write`, `contents:write`, `metadata:read` |
94
+
95
+ **Active provider (gitlab example):**
96
+
97
+ 1. [Create GitLab token](<token_create_url>) — form opens with name/scopes filled → click **Create**
98
+ 2. Copy token → open [gitlab.token](<token_edit_path>) → replace `YOUR_TOKEN_HERE` → save
99
+ 3. **`/wk-status`**
100
+
101
+ **Inactive provider:** show `vcs_config.tokenCreateUrls.<other>` link for later; only the active token file is required now.
102
+
103
+ ## Rules
104
+
105
+ - Never ask for or accept tokens in chat.
106
+ - Mutations only via `workflow_toolkit_init_apply` with `confirmed: true`.
107
+ - Verification is **`/wk-status`** only — not part of init.
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: wk-issue-update
3
+ description: Draft and post ES-CL YouTrack task update with time tracking via MCP only. Use /wk-issue-update.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Issue Update — time + ES-CL comment
8
+
9
+ Post a Spanish comment and log time on a **task** issue (not the meeting issue).
10
+
11
+ **Agent language:** English unless the user writes in another language. **Comment body:** Spanish (`es-CL`) only.
12
+
13
+ **Style contract:** Read [references/youtrack-update-style.md](references/youtrack-update-style.md) before every draft or polish pass. Output should read like the user's ChatGPT revision thread — **their voice, manager-friendly**, not an agent status report.
14
+
15
+ **Audience:** @Alejandra.Flores — not a developer. Clarify technical terms in plain language when they appear.
16
+
17
+ ## Step 0 — Toolkit ready
18
+
19
+ If unsure, call `workflow_toolkit_status`. Stop if `ready: false`.
20
+
21
+ ## Step 1 — Issue (required)
22
+
23
+ **Always** confirm which YouTrack issue this update is for.
24
+
25
+ 1. If the user did **not** already paste a YouTrack URL or issue id (`NSR-40`) in the message that started this flow, ask:
26
+ > Paste the YouTrack issue URL or id for this update (e.g. `https://…/issue/NSR-40` or `NSR-40`).
27
+ 2. Wait for their reply. Do **not** guess from spec/plan unless they explicitly say to use the plan's issue.
28
+ 3. Call `workflow_youtrack_parse_issue` with `issue_ref` = what they pasted.
29
+ 4. On error, ask again with the parse error. On success, note `issueId`.
30
+
31
+ ## Step 2 — Context (required)
32
+
33
+ Call `workflow_youtrack_context` with `issue_id` from Step 1 (or `issue_url` / `issue_ref` directly). Stop on error.
34
+
35
+ Show the resolved issue once in chat: `Updating **{issueId}**` (+ `issueUrl` if returned).
36
+
37
+ ## Step 3 — How to start (required)
38
+
39
+ Use native `AskQuestion`: title `Draft mode`; prompt `How should we start the YouTrack update?`; options `I have notes` (recommended), `Help me remember`, and `Draft for me`.
40
+
41
+ ### Mode `paste` — I have notes (Recommended)
42
+
43
+ Ask user to paste rough notes, half-written update, or bullets. Skip to Step 5.
44
+
45
+ ### Mode `remind` — Help me remember
46
+
47
+ 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.
48
+ 2. Ask conversational follow-ups: *¿Qué te costó más? ¿Qué queda para mañana? ¿Algo bloqueado?*
49
+ 3. User replies in their words (Spanish messy notes OK).
50
+ 4. Treat their reply as the draft → Step 5.
51
+
52
+ **Never** post git context or commit list directly to YouTrack.
53
+
54
+ ### Mode `auto` — Draft for me to edit
55
+
56
+ 1. Use `workflow_git_context` + conversation context to infer what they likely worked on.
57
+ 2. Write a **first draft in Spanish** per **youtrack-update-style.md** (paragraphs, manager-friendly, no file paths).
58
+ 3. Show draft in a fenced block. Ask user to correct, add, or replace — user may reply with a full rewrite.
59
+ 4. Use their corrected version as input → Step 5.
60
+
61
+ ## Step 4 — Duration
62
+
63
+ Ask time spent on this task issue. User text → `workflow_youtrack_parse_duration`. **Do not compute minutes yourself.**
64
+
65
+ ## Step 5 — Polish (ChatGPT pass)
66
+
67
+ Polish the approved draft per **youtrack-update-style.md**:
68
+
69
+ - Paragraphs, not PR bullets
70
+ - Technical terms get a short plain-language gloss for the manager
71
+ - Keep `# Actualización` + greeting — if user already included them, do not duplicate `@Alejandra.Flores`
72
+ - `## Off-topic` only if user's material has a clear tangent section
73
+
74
+ Call `workflow_youtrack_draft` with:
75
+
76
+ - `issueId` from Step 1
77
+ - `userNotes` = polished **body only** (no `# Actualización`, no greeting line)
78
+ - `greeting` from context
79
+ - **Do not pass** `projectName`, `facts`, `includeProjectOpener`, or `includeFacts`
80
+
81
+ ## Step 6 — Review
82
+
83
+ Show returned `markdown` in a fenced block. User may edit in chat (apply edits and re-show if they change wording).
84
+
85
+ ## Step 7 — Post
86
+
87
+ 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:
88
+
89
+ `workflow_youtrack_post` with `confirmed: true`, `issueId`, `markdown`, `minutes`. **Do not pass `date`.**
90
+
91
+ 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.
92
+
93
+ ## Rules
94
+
95
+ - Never call YouTrack HTTP directly.
96
+ - Never post without `confirmed: true`.
97
+ - Never skip Step 1 — each run targets the issue the user names.
98
+ - If it sounds robotic, remove structure you added and re-read the style reference.
99
+ - End state is always: **user reviewed → post + log time**.
@@ -0,0 +1,81 @@
1
+ # YouTrack update style (Cristhofer / es-CL)
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.
4
+
5
+ ## Audience
6
+
7
+ **@Alejandra.Flores is the primary reader — she is not a developer.** Write for a technical project manager:
8
+
9
+ - Lead with **what you worked on and why it mattered**, not implementation mechanics.
10
+ - If you mention something technical (OpenAPI, flags, component names, GUAS, MFE), add **one short plain-language clause** so the reader understands impact without knowing the stack.
11
+ - Prefer product/feature language: *data sources*, *integración con el backend*, *selector de color*, *vista del segundo factor*.
12
+
13
+ ### Technical detail — clarify, don't drop
14
+
15
+ | Too dev (avoid alone) | Better for manager |
16
+ |-----------------------|-------------------|
17
+ | overlays fuera del shadow DOM en el host | el selector de color no se veía bien cuando el reporte está embebido en la web principal |
18
+ | `replaceUrl: true` en el interceptor | para que al volver atrás no se repitiera el mismo error en bucle |
19
+ | Migré a `daisy-overlay-tokens` | ajusté los estilos del overlay para que respeten el tema de la web |
20
+
21
+ Only include dev terms the user actually brought up — then **translate or contextualize** in the same breath.
22
+
23
+ ## Shape
24
+
25
+ 1. `# Actualización` (single H1)
26
+ 2. Blank line
27
+ 3. `@Alejandra.Flores` + greeting (`Hola, buenos días.` / `Hola, buenas tardes.`) — same line or next paragraph OK
28
+ 4. **Body: paragraphs**, not bullet dumps
29
+
30
+ Optional second H1 when the user has a long tangent block:
31
+
32
+ - `## Off-topic` — only when the user's material is clearly a side topic (tooling, proceso, ideas). Keep the main work under `# Actualización`.
33
+
34
+ ## Openers (only if the user's material implies it)
35
+
36
+ - `Hoy estuve trabajando en…` / `Hoy por la tarde he estado full con…`
37
+ - `Hoy estuve full con <proyecto>.`
38
+ - `Dado lo que conversamos,…`
39
+
40
+ Do **not** force an opener.
41
+
42
+ ## Voice
43
+
44
+ - First person, Chilean Spanish: *harto*, *darle una vuelta*, *al día*, *trasteando*, *ojalá*.
45
+ - Honest: *al parecer*, *creo que*, *imagino que*, *no alcancé a*, *entiendo que*.
46
+ - Explain **why** and **what's next**, not file trees.
47
+ - Close with forward look when relevant: *Mañana…*, *me falta…*, *de momento va bien*.
48
+
49
+ ## Tangents
50
+
51
+ Natural bridges: `Por otro lado,…`, `Como comentario adicional,…`, `Como punto aparte,…`, `Quiero comentar algo que puede ser interesante.`
52
+
53
+ Long tooling/process tangents → `## Off-topic` (exemplar 4).
54
+
55
+ ## Allowed formatting
56
+
57
+ - Backticks for product/component names the user mentioned: `` `color-picker` ``, `` `button` ``
58
+ - Links and screenshots the user attached
59
+ - Short inline lists **only** when comparing options the manager needs to understand (exemplar 4: OpenAPI vs backend vs frontend) — as **prose or one flowing sentence**, not a task checklist
60
+
61
+ ## Forbidden (unless user wrote them verbatim)
62
+
63
+ - Branch names, SHAs, `src/...` paths
64
+ - Nested `###` subsections for work items
65
+ - Bullet lists of completed tasks (PR style)
66
+ - Stacked changelog verbs: *Implementé*, *Migré*, *Alineé*
67
+ - Invented work or metrics
68
+ - Pasting `git log`, agent session, or `facts.*` into the comment
69
+ - Jargon without a plain-language gloss
70
+
71
+ ## Polish level (ChatGPT-thread)
72
+
73
+ 1. Grammar and spelling.
74
+ 2. Smooth sentences; similar length to input.
75
+ 3. Split wall-of-text into paragraphs; add bridges only when needed.
76
+ 4. **Do not** add facts the user did not supply.
77
+ 5. **Do** add a brief gloss when the user used opaque tech terms.
78
+
79
+ ## Length
80
+
81
+ Match the user. Never pad.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: wk-meetings
3
+ description: Log meeting time only via workit MCP — general (IRPT-12) or web (NSXFT-21). No comments. Use /wk-meetings.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Meetings — time only
8
+
9
+ Log meeting time to a **meeting issue** from config. **Never post a comment.**
10
+
11
+ **Agent language:** English unless the user writes in another language.
12
+
13
+ ## Step 0 — Toolkit ready
14
+
15
+ If unsure, call `workflow_toolkit_status`. Stop if `ready: false`.
16
+
17
+ ## Step 1 — Context (required)
18
+
19
+ Call MCP `workflow_youtrack_context` with `mode: "meetings"` (no `issue_id` yet). Stop on error.
20
+
21
+ ## Step 2 — Pick meeting type (required)
22
+
23
+ Use native **AskQuestion** with `meetingOptions` from context:
24
+
25
+ - Title: `Meeting type`
26
+ - Prompt: `Where should this time be logged?`
27
+ - Options: one `id:label` pair per option — use `key` as id, `label` as label (include issue id in label, e.g. `IRPT-12 — General meetings`)
28
+
29
+ → **AskQuestion** → map selected `key` to `issue` and `workItemText` from `meetingOptions`.
30
+
31
+ ## Step 3 — Duration
32
+
33
+ Ask how much meeting time today (English UI). User text → `workflow_youtrack_parse_duration`. **Do not compute minutes yourself.**
34
+
35
+ ## Step 4 — Preview + confirm
36
+
37
+ Show preview: chosen issue, label, minutes, work-item text.
38
+
39
+ Use native **AskQuestion** to confirm logging the shown meeting time; on yes:
40
+
41
+ ## Step 5 — Log time only
42
+
43
+ Call `workflow_youtrack_log_time` with `issueId`, `minutes`, `text` (from `workItemText`). **Do not pass `date`** — tool uses epoch ms automatically.
44
+
45
+ **Never** call `workflow_youtrack_post` from this skill.
46
+
47
+ ## Rules
48
+
49
+ - Tools only — no direct YouTrack HTTP.
50
+ - No comment on meeting issues.
@@ -0,0 +1,88 @@
1
+ ---
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.
4
+ ---
5
+
6
+ # PR — Draft or Create
7
+
8
+ Draft a merge request / pull request body, or create it on GitLab (`glab`) / GitHub (`gh`) using `~/.config/workflow-toolkit/vcs.json`.
9
+
10
+ **Setup:** `/wk-init` → pick provider → VCS scaffold → edit active token file.
11
+
12
+ **Active provider:** read `vcs_config.provider` from `workflow_pr_context` (or `provider` in `~/.config/workflow-toolkit/vcs.json`). That decides `glab` vs `gh`.
13
+
14
+ ## Step 1 — Gather facts (required)
15
+
16
+ Call MCP `workflow_pr_context` with **no `range` argument** unless the user supplied an explicit git range string.
17
+
18
+ On `feature/*` or `bugfix/*`, the tool compares **only against `develop`** (never `main`).
19
+
20
+ Use the tool return as ground truth. Pay attention to:
21
+
22
+ - `body_style_rules` and `merged_pr_style.examples` — match your recent merged MRs
23
+ - `vcs_config` — provider, `defaultTargetBranch`, `pr.squashOnMerge`, `pr.removeSourceBranch`
24
+ - `commits`, `diff_stat`, `files` — **for drafting only**, never paste into the published body
25
+
26
+ ## Step 2 — Draft body (required)
27
+
28
+ Write title + body per rules below. Read `merged_pr_style` if present.
29
+
30
+ ### Body rules (from your merged MRs)
31
+
32
+ **Include:**
33
+
34
+ - `## Summary` — short outcome bullets (what changed for the user/reviewer)
35
+ - `## Validation` or `## Test plan` — only checks you actually ran (`[x]` when done)
36
+
37
+ **Never include:**
38
+
39
+ - `## Notes` with branch names, `develop..HEAD`, commit counts, or file counts
40
+ - Commit log, `diff_stat`, or changed-files list
41
+ - Git sync warnings, `range_mode`, or agent meta
42
+ - Long nested `###` sections duplicating the diff
43
+ - Scope disclaimers ("scoped to branch X…") unless the user explicitly asks
44
+
45
+ Title: Conventional Commits — `type(scope): subject`, imperative, lowercase, no trailing period.
46
+
47
+ ## Step 3 — Review (show before confirm)
48
+
49
+ Show:
50
+
51
+ ```md
52
+ Title:
53
+ <copy-paste title>
54
+
55
+ Body:
56
+ <copy-paste body>
57
+ ```
58
+
59
+ ## Step 4 — Create (optional)
60
+
61
+ Use native `AskQuestion`: title `Create MR/PR`; prompt `Create the reviewed MR/PR now?`; options `Create` and `Cancel`. On `Create`:
62
+
63
+ `workflow_pr_create` with `confirmed: true`, `title`, `body`, optional `target_branch` (defaults from vcs.json).
64
+
65
+ **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.
66
+
67
+ Creation uses vcs.json flags (both default `true`):
68
+
69
+ - **squash on merge** — single commit when you merge in GitLab/GitHub UI
70
+ - **remove source branch** — branch deleted after merge (clean `develop`, no stale `feature/*`)
71
+ - **push branch** — pushes current branch before create
72
+
73
+ GitLab: `glab mr create` with `-t`, `-d` (required in non-interactive mode), `--squash-before-merge`, `--remove-source-branch`
74
+ GitHub: use **Squash and merge** + **Delete branch** in the UI (or `gh pr merge --squash --delete-branch`); create step sets title/body only.
75
+
76
+ ## Branch policy (tool-enforced)
77
+
78
+ | Current branch | `/wk-pr` without args |
79
+ | -------------- | --------------------- |
80
+ | `feature/*`, `bugfix/*` | OK — base `develop` |
81
+ | protected branches | Error |
82
+
83
+ ## Rules
84
+
85
+ - Do not edit product files in this skill (except user asks to fix PR template).
86
+ - Never paste VCS tokens in chat.
87
+ - **Never run `glab` or `gh` directly** — only `workflow_pr_create`.
88
+ - Do not claim validation passed unless evidence exists.
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: wk-release-notes
3
+ description: Draft release notes via workflow_release_notes_context. Use for /wk-release-notes or "draft release notes".
4
+ ---
5
+
6
+ # Release Notes — User-Facing Release Notes
7
+
8
+ Draft release notes for a given release, version, tag, or commit range.
9
+
10
+ ## Step 1 — Gather facts (required)
11
+
12
+ If the user did not provide an exact tag, version, or commit range, ask for it before calling the tool.
13
+
14
+ Call MCP tool `workflow_release_notes_context` with arguments from the user's message (range, version, paths, etc.).
15
+
16
+ **Workspace root:** defaults to the Cursor workspace. Pass `workspace_root` when the user names a different repository path.
17
+
18
+ Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
19
+ If the tool errors, report the error and stop.
20
+
21
+ Pass tag or range strings as `range_or_tag`.
22
+
23
+ ## Rules
24
+
25
+ - Do not edit files unless the user explicitly asks for an edit target.
26
+ - Do not create or publish a release.
27
+ - Write for users, not maintainers.
28
+ - Mention features, behavior changes, fixes, migration notes, installation/update notes, and known issues when supported by context.
29
+ - Do not mention CI, tests, refactors, formatting, dependency bumps, or internal tooling unless they directly affect users.
30
+ - If the requested release/range is missing or ambiguous, ask for the exact tag, version, or commit range.
31
+ - If there are no user-facing changes, say that directly.
32
+
33
+ ## Output
34
+
35
+ Return only:
36
+
37
+ ```md
38
+ # <Release title>
39
+
40
+ ## Highlights
41
+
42
+ - ...
43
+
44
+ ## Fixes
45
+
46
+ - ...
47
+
48
+ ## Upgrade Notes
49
+
50
+ - ...
51
+
52
+ ## Known Issues
53
+
54
+ - ...
55
+ ```
56
+
57
+ Omit empty sections except `Highlights`. If `Highlights` would be empty, output a short note explaining why.
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: wk-status
3
+ description: Full workit health check — MCP deps, YouTrack + VCS (GitLab/GitHub) API verify. Use /wk-status after editing token files.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Status
8
+
9
+ Deterministic health check. **Tools only — no manual git/curl.**
10
+
11
+ **Agent language:** English unless the user writes in another language.
12
+
13
+ ## Step 1 — Full status (required)
14
+
15
+ Call MCP `workflow_toolkit_status` once.
16
+
17
+ Use the return value as ground truth. Do not infer state yourself.
18
+
19
+ ## Step 2 — Report (English)
20
+
21
+ Show a table from `items[]`:
22
+
23
+ | Item | OK | Notes |
24
+ | -------------------- | ------------------------ | ---------------------------------- |
25
+ | MCP npm dependencies | items[mcp_deps].ok | path |
26
+ | YouTrack config | items[youtrack_json].ok | path |
27
+ | YouTrack token file | items[youtrack_token].ok | placeholder? → show `token_create_url` + `token_edit_path` |
28
+ | VCS config | items[vcs_json].ok | path |
29
+ | GitLab token | items[gitlab_token].ok | required when provider=gitlab |
30
+ | GitHub token | items[github_token].ok | required when provider=github |
31
+
32
+ ### YouTrack settings (required when `youtrack_config` present)
33
+
34
+ Always show this block from tool output — user expects to see meeting issue and time-logging targets:
35
+
36
+ | Setting | Value |
37
+ |---------|-------|
38
+ | Config file | clickable `youtrack_config.config_edit_path` |
39
+ | Meeting issue | `meetingIssue` — time only via `/wk-meetings` |
40
+ | Meeting URL | `meetingIssueUrl` as markdown link |
41
+ | Manager tag | `@` + `defaultMention` |
42
+ | Task issue (time + comment) | from active spec/plan `**YouTrack:**` — not stored in json |
43
+ | Timezone | `timezone` |
44
+
45
+ Then **YouTrack API** from `youtrack_verify`:
46
+
47
+ - `ok: true` → show `login`, `name`, `meetingIssue`, `meetingIssueSummary` if present
48
+ - `ok: false` → show `error` and `next_step` from tool
49
+
50
+ ### VCS / PR settings (when `vcs_config` present)
51
+
52
+ | Setting | Value |
53
+ |---------|-------|
54
+ | Config | `vcs_config.config_edit_path` |
55
+ | Provider | `provider` (`gitlab` / `github`) |
56
+ | Target branch | `defaultTargetBranch` |
57
+ | Squash on merge | `pr.squashOnMerge` |
58
+ | Remove source branch | `pr.removeSourceBranch` |
59
+
60
+ **VCS API** from `vcs_verify`:
61
+
62
+ - `ok: true` → show `username`, `provider`
63
+ - `ok: false` → show `vcs_token_edit_path` or token `fix` from items when placeholder
64
+
65
+ ## Step 3 — Verdict
66
+
67
+ - `ready: true` → "All checks passed. Toolkit is ready."
68
+ - `ready: false` with `placeholder: true` on **YouTrack** → show both links:
69
+
70
+ ```markdown
71
+ 1. [Create YouTrack token](<token_create_url>) — New token → name **workit**, scope **YouTrack**
72
+ 2. Paste into [youtrack.token](<token_edit_path>) — replace `YOUR_TOKEN_HERE`, save, then `/wk-status`
73
+ ```
74
+
75
+ Use `items[youtrack_token].token_create_url` / `token_edit_path`, or top-level `token_create_url` + `token_edit_path` from tool output.
76
+
77
+ - `ready: false` with VCS placeholder → show **`vcs_token_edit_path`** and active provider `token_create_url` from items.
78
+
79
+ - `ready: false` (other) → show `next_step` and `youtrack_verify.error` from tool output.
80
+
81
+ ## Rules
82
+
83
+ - Do not call YouTrack HTTP directly — `workflow_toolkit_status` includes verify.
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.