luckiest-co 1.0.11 → 1.0.13

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.
@@ -9,7 +9,7 @@
9
9
  "name": "luckiest",
10
10
  "source": "./",
11
11
  "description": "Plan, go, finish, plus bundled free Luckiest skills that work in Claude Code, web chat, and Cowork.",
12
- "version": "0.1.12",
12
+ "version": "0.1.14",
13
13
  "author": { "name": "Luckiest" }
14
14
  }
15
15
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luckiest",
3
3
  "description": "Plan, go, finish. Guided planning, progress dashboards, and your luckiest.co tribe inside Claude Code.",
4
- "version": "0.1.12",
4
+ "version": "0.1.14",
5
5
  "author": { "name": "Luckiest" }
6
6
  }
@@ -2,7 +2,9 @@
2
2
  description: Your charms balance and recent related activity.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` and `references/chart-renderer.md` first and follow them for all output in this command.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
+
7
+ Read `references/chart-renderer.md` before rendering any chart and follow it.
6
8
 
7
9
  ## Step 1: Get the data
8
10
 
@@ -27,7 +29,7 @@ Example:
27
29
  → /luckiest charms
28
30
  ```
29
31
 
30
- Use only user-facing vocabulary from `references/vocabulary.md`. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
32
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
31
33
 
32
34
  ## Step 3: Recommend next action
33
35
 
@@ -2,7 +2,7 @@
2
2
  description: Wrap up, what shipped, what changed, what's next.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  Asking the user a question: this command tells you to use the AskUserQuestion tool
8
8
  so the user can click instead of typing. That tool only exists in Claude Code. In
@@ -33,7 +33,7 @@ Reply with a number, or tell me what to change.
33
33
 
34
34
  ## Step 1: Check that everything is done
35
35
 
36
- Derive the project key as described in `references/project-key.md`. Pass this same `project` value on both luckiest plan tool calls in this command (`status` here and `finish` in Step 3), so you close this project's plan and not another one.
36
+ Derive the project key once per session: run `git config --get remote.origin.url` and normalize the result to lowercase `host/owner/repo` with any `.git` suffix removed (for example `git@github.com:acme/app.git` becomes `github.com/acme/app`). If it is not a git repo, use the absolute working directory path. If there is no local shell (web chat, Cowork), omit `project` entirely. Pass this same `project` value on both luckiest plan tool calls in this command (`status` here and `finish` in Step 3), so you close this project's plan and not another one.
37
37
 
38
38
  Call the `status` tool from the luckiest MCP server with that `project` value.
39
39
 
package/commands/go.md CHANGED
@@ -2,7 +2,7 @@
2
2
  description: Run your plan, one task at a time, checked as it goes.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  Asking the user a question: this command tells you to use the AskUserQuestion tool
8
8
  so the user can click instead of typing. That tool only exists in Claude Code. In
@@ -33,7 +33,7 @@ Reply with a number, or tell me what to change.
33
33
 
34
34
  ## Step 1: Load the plan
35
35
 
36
- Derive the project key as described in `references/project-key.md`. Pass this same `project` value on every luckiest plan tool call in this command (`status`, `apply`, `verify`, `pause`), so you run this project's plan and not another one.
36
+ Derive the project key once per session: run `git config --get remote.origin.url` and normalize the result to lowercase `host/owner/repo` with any `.git` suffix removed (for example `git@github.com:acme/app.git` becomes `github.com/acme/app`). If it is not a git repo, use the absolute working directory path. If there is no local shell (web chat, Cowork), omit `project` entirely. Pass this same `project` value on every luckiest plan tool call in this command (`status`, `apply`, `verify`, `pause`), so you run this project's plan and not another one.
37
37
 
38
38
  Call the `status` tool from the luckiest MCP server with that `project` value. This is a zero-context resume, treat its result as the full picture of where things stand: don't assume anything about prior state beyond what it returns.
39
39
 
@@ -60,7 +60,7 @@ Research subagents (looking something up, exploring the codebase) are always all
60
60
 
61
61
  Take the ready tasks one at a time, in order. For each one:
62
62
 
63
- 1. First, turn the task into a tight working prompt with the `luckiest-prompt-rewrite` skill, targeting whoever will do the work (yourself, or the subagent and its model from Step 2). Use that rewritten prompt to do the task. If the skill is not installed, write a clear prompt yourself and continue. Do this before every task, in both default and fast mode.
63
+ 1. If the task is being handed to a subagent (fast mode), first turn it into a tight working prompt with the `luckiest-prompt-rewrite` skill, targeting that subagent and its model from Step 2; if the skill is not installed, write a clear prompt yourself. When you are doing the task yourself, skip the rewrite and start working; the task title and its "done means..." line are the prompt.
64
64
  2. Do the work using the task's suggested skill. If that skill is installed, invoke it via the Skill tool. If it isn't installed, do the work directly without it.
65
65
  3. Check your result against the task's "done means..." line. Don't move on until it's actually met.
66
66
  4. If the result is something the user can try themselves (a page, a feature, a flow), ask with the AskUserQuestion tool so they can click instead of typing. Question: "Try it yourself, does it work?" Options: "Works" and "Needs fixes" (keep the "Other" free-text choice available). Wait for their answer.
@@ -71,6 +71,9 @@ Only move to the next ready task once the current one is applied and verified (o
71
71
 
72
72
  After a task passes and is verified, run a quick automation check. Ask yourself: was this task repeatable, rule-based, or the kind of thing that will come up again? If yes, offer it with the AskUserQuestion tool so the user can click instead of typing. Question: "This looks worth automating. Turn it into a skill you can schedule or run as a routine?" Options: "Automate it" and "Skip" (keep the "Other" free-text choice available). Only offer, never build it without a yes. If they say yes, create the skill (with the skill-builder or skill-creator skill) and set it up to run on a schedule or as a routine. If the task was a one-off, skip the offer and move on.
73
73
 
74
+
75
+ Shell note: always quote file paths in shell commands. Paths with parentheses or brackets (for example `app/(public)/orders`) break zsh globbing when unquoted and waste turns on retries. Prefer the dedicated file tools (Read, Glob, Grep) over shell listing commands when either works.
76
+
74
77
  ## Step 4: Stop conditions
75
78
 
76
79
  Pause and ask the user before doing any of the following, even if it seems like the obvious next step:
@@ -2,7 +2,9 @@
2
2
  description: See who needs a hand right now, and claim a request to help.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` and `references/chart-renderer.md` first and follow them for all output in this command.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
+
7
+ Read `references/chart-renderer.md` before rendering any chart and follow it.
6
8
 
7
9
  ## Step 1: Get the data
8
10
 
@@ -55,7 +57,7 @@ Example:
55
57
  → tell me "claim a13" and I'll pick it up with respond_to_assist
56
58
  ```
57
59
 
58
- Use only user-facing vocabulary from `references/vocabulary.md`. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term. Do not fabricate requests, posters, or rewards beyond what the tools return.
60
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term. Do not fabricate requests, posters, or rewards beyond what the tools return.
59
61
 
60
62
  ## Step 3: Recommend next action
61
63
 
package/commands/home.md CHANGED
@@ -2,7 +2,9 @@
2
2
  description: The community dashboard. Wishes and charms, plan progress, tribe pulse, and who needs help.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` and `references/chart-renderer.md` first and follow them for all output in this command.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
+
7
+ Read `references/chart-renderer.md` before rendering any chart and follow it.
6
8
 
7
9
  ## Step 1: Get the data
8
10
 
@@ -33,7 +35,7 @@ Render one fenced code block following the chart-renderer grammar, with four box
33
35
  - One line: `open requests X` where X is `openAssists`.
34
36
  - Footer: `→ /luckiest helpers`
35
37
 
36
- Use only user-facing vocabulary from `references/vocabulary.md`. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
38
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
37
39
 
38
40
  ## Step 3: Recommend next action
39
41
 
@@ -2,7 +2,9 @@
2
2
  description: See how the tribe ranks. Top scores, one bar chart.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` and `references/chart-renderer.md` first and follow them for all output in this command.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
+
7
+ Read `references/chart-renderer.md` before rendering any chart and follow it.
6
8
 
7
9
  ## Step 1: Get the data
8
10
 
@@ -28,7 +30,7 @@ Render one fenced code block following the chart-renderer grammar.
28
30
 
29
31
  4. **Footer**: last line in the block is `→ /luckiest leaderboard` (or the range-qualified form if a range was passed, e.g. `→ /luckiest leaderboard 30d`).
30
32
 
31
- Use only user-facing vocabulary from `references/vocabulary.md`. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
33
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
32
34
 
33
35
  ## Step 3: Recommend next action
34
36
 
package/commands/merge.md CHANGED
@@ -2,7 +2,7 @@
2
2
  description: Merge two overlapping skills into one, after you review the diff.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  ## Step 1: Get the two skill ids
8
8
 
@@ -2,7 +2,7 @@
2
2
  description: Find installed skills that overlap with your own, and resolve them.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  ## Step 1: Pick a skill to check
8
8
 
package/commands/plan.md CHANGED
@@ -2,7 +2,7 @@
2
2
  description: Plan your next piece of work. Guided questions, then a plan Claude can run.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  Asking the user a question: this command tells you to use the AskUserQuestion tool
8
8
  so the user can click instead of typing. That tool only exists in Claude Code. In
@@ -37,7 +37,7 @@ Check whether `.luckiest/BRIEF.md` exists in the current project. If it exists,
37
37
 
38
38
  ## Step 2: Check for active work
39
39
 
40
- Derive the project key as described in `references/project-key.md`. Pass this same `project` value on every luckiest plan tool call in this command (`status` here and `plan` in Step 5), so this project gets its own plan and does not collide with another project's.
40
+ Derive the project key once per session: run `git config --get remote.origin.url` and normalize the result to lowercase `host/owner/repo` with any `.git` suffix removed (for example `git@github.com:acme/app.git` becomes `github.com/acme/app`). If it is not a git repo, use the absolute working directory path. If there is no local shell (web chat, Cowork), omit `project` entirely. Pass this same `project` value on every luckiest plan tool call in this command (`status` here and `plan` in Step 5), so this project gets its own plan and does not collide with another project's.
41
41
 
42
42
  Call the `status` tool from the luckiest MCP server with that `project` value.
43
43
 
@@ -46,7 +46,9 @@ Call the `status` tool from the luckiest MCP server with that `project` value.
46
46
 
47
47
  ## Step 3: Run the interview
48
48
 
49
- Open the interview with a short line that says no plan is active and you are starting the interview.
49
+ If the user's invocation already states the outcome they want (they passed arguments describing a goal, a feature, or a problem to solve), skip the interview question entirely. Say in one line that you are planning from what they gave you, use their stated outcome directly, and jump ahead to drafting the task list below. The approval question in Step 4 still runs; it is the only question they get.
50
+
51
+ Otherwise, open the interview with a short line that says no plan is active and you are starting the interview.
50
52
 
51
53
  Then ask question 1 using the AskUserQuestion tool so the user can click an answer instead of typing one. Do not put the examples in plain text for them to copy. Present them as selectable options:
52
54
 
@@ -60,7 +62,7 @@ Use the answer (plus the brief, if present) to shape a draft task list of 3 to 7
60
62
 
61
63
  Include non-coding work too. Marketing, content, design, research, and ops tasks belong in the plan alongside code. Never drop a task just because it is not a coding task; route it to its matching skill like any other.
62
64
 
63
- For each draft task, call the `skill_router` tool from the luckiest MCP server. It returns `skills` (matching owned skills) and `who` (up to 3 tribe members who finished a similar task before). Attach the suggested skill(s) to the task, and attach `who` so the plan can carry who has done this kind of work.
65
+ Route all draft tasks in ONE `skill_router` call from the luckiest MCP server: pass `prompts` as an array of every task title. It returns `results`, one entry per task with `skills` (matching owned skills) and `who` (up to 3 tribe members who finished a similar task before). Attach the suggested skill(s) to each task, and attach `who` so the plan can carry who has done this kind of work. If the server rejects `prompts` (older server), fall back to one `skill_router` call per task, issued in parallel in a single message, never one at a time.
64
66
 
65
67
  For each task, state a one-line "done means..." in chat (not in the title, not stored anywhere) so the user sees what complete looks like for that task. When `who` is not empty, add a short line naming those people, for example "Done before by: **Sam**, **Alex**."
66
68
 
@@ -2,7 +2,7 @@
2
2
  description: Your skills, list what's installed, pull new purchases.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command. Never delete skills.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  ## Step 1: List installed luckiest skills
8
8
 
package/commands/start.md CHANGED
@@ -2,7 +2,7 @@
2
2
  description: Tell me about your project, a short interview that writes your Brand Brief.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  ## Step 1: Check for an existing brief
8
8
 
@@ -2,11 +2,13 @@
2
2
  description: Where you are. Progress, tasks, and your one next step.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` and `references/chart-renderer.md` first and follow them for all output in this command.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
+
7
+ Read `references/chart-renderer.md` before rendering any chart and follow it.
6
8
 
7
9
  ## Step 1: Check for a plan
8
10
 
9
- Derive the project key as described in `references/project-key.md`, then call the `status` tool from the luckiest MCP server with that `project` value so you read this project's plan and not another one.
11
+ Derive the project key once per session: run `git config --get remote.origin.url` and normalize the result to lowercase `host/owner/repo` with any `.git` suffix removed (for example `git@github.com:acme/app.git` becomes `github.com/acme/app`). If it is not a git repo, use the absolute working directory path. If there is no local shell (web chat, Cowork), omit `project` entirely. Then call the `status` tool from the luckiest MCP server with that `project` value so you read this project's plan and not another one.
10
12
 
11
13
  If the returned state is null (no active plan), output nothing except these two lines, in order:
12
14
 
@@ -35,7 +37,7 @@ If a plan exists, render one fenced code block following the chart-renderer gram
35
37
  5. **Bookmark line (if paused)**: If the state includes a bookmark (pause), add a line showing the bookmark message.
36
38
  6. **Footer**: Last line in the block ends with the command to check status again (e.g. `→ /luckiest status`).
37
39
 
38
- Use only the user-facing vocabulary from `references/vocabulary.md`. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
40
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
39
41
 
40
42
  Map each task's status to a glyph (these are the task status values, not the plan position):
41
43
  - "done" -> `✓`
@@ -2,7 +2,7 @@
2
2
  description: Check for updates to your installed luckiest skills and plugin.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  ## Step 1: Check for updates
8
8
 
package/commands/vouch.md CHANGED
@@ -2,7 +2,7 @@
2
2
  description: Request or approve a warm intro to someone outside your tribe.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` first and follow it for all output in this command: plain language, no em dashes, no internal terms, one next-step recommendation at the end.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
6
 
7
7
  ## Step 1: Figure out the intent
8
8
 
@@ -2,7 +2,9 @@
2
2
  description: Your wishes balance and recent related activity.
3
3
  ---
4
4
 
5
- Read `references/vocabulary.md` and `references/chart-renderer.md` first and follow them for all output in this command.
5
+ Output rules for this command: plain language, no em dashes, no internal terms, and end with exactly one next-step line in the form `Next: <one action>`. The server may return internal words; translate them and never show them: PLAN means plan, APPLY means go, UNIFY means finish, DRAFT means in progress, DOING means active, DONE means complete, UAT means testing, AC means requirements, HANDOFF means ready for review, skill_loop means status.
6
+
7
+ Read `references/chart-renderer.md` before rendering any chart and follow it.
6
8
 
7
9
  ## Step 1: Get the data
8
10
 
@@ -27,7 +29,7 @@ Example:
27
29
  → /luckiest wishes
28
30
  ```
29
31
 
30
- Use only user-facing vocabulary from `references/vocabulary.md`. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
32
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
31
33
 
32
34
  ## Step 3: Recommend next action
33
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luckiest-co",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "Luckiest for Claude Code: plan, go, finish. Your luckiest.co skills and tribe, inside Claude.",
5
5
  "bin": {
6
6
  "luckiest-co": "./bin/install.js"
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: luckiest-charms
3
+ description: "Your Luckiest charms balance and recent related activity. Use when the user says /luckiest charms, luckiest charms, or asks about their charms."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ Chart grammar for any dashboard output in this skill:
9
+
10
+
11
+ All dashboard commands use this grammar for rendering data visualizations.
12
+
13
+ ## Grammar Rules
14
+
15
+ Render dashboards as fenced code blocks using this grammar:
16
+ - Section box: title line, then content, no borders needed beyond blank lines.
17
+ - Horizontal bar: `█` for filled, `░` for empty, width 20 chars, value right-aligned.
18
+ - Numbers: aligned columns, thousands separators.
19
+ - Range header when applicable: `[ 7 Days ] 30 Days All` with the active range bracketed.
20
+ - Footer line naming the drill-down command, e.g. `→ /luckiest wishes 30d`.
21
+
22
+ ## Example
23
+
24
+ ```
25
+ Wishes [ 7 Days ]
26
+ balance 42 earned 12 spent 5
27
+ 06-28 ████████░░░░░░░░░░░░ 4
28
+ 06-29 ██████████████░░░░░░ 7
29
+ 07-01 ██░░░░░░░░░░░░░░░░░░ 1
30
+ → /luckiest wishes 30d
31
+ ```
32
+
33
+ ## Implementation Notes
34
+
35
+ - Each bar is exactly 20 filled/empty blocks.
36
+ - Values are right-aligned after the bar.
37
+ - Column headers are spaced evenly with at least 2 spaces between.
38
+ - The footer command should match the context (e.g., `/luckiest wishes 30d` for a wishes dashboard).
39
+ - Use single-space line breaks between sections for clarity.
40
+
41
+ ## Step 1: Get the data
42
+
43
+ Call the `overview` tool from the luckiest MCP server. Use the `charms` balance and scan `tribePulse` for any entries whose `event` text relates to charms (earning or spending).
44
+
45
+ ## Step 2: Render the dashboard
46
+
47
+ Render one fenced code block following the chart-renderer grammar:
48
+
49
+ 1. Title line: `Charms`
50
+ 2. Balance line: `balance X` where X is the `charms` value from `overview`, right-aligned if paired with other numbers.
51
+ 3. If any charm-related entries exist in `tribePulse`, list them plainly, one per line, using the raw `event` text exactly as returned. Do not invent a friendlier phrasing.
52
+ 4. If there is no daily earn/spend history available (there is no history endpoint in this version), add this exact line: `History view coming soon.` Do not invent daily numbers, trends, or a chart of activity over time. Only render a bar chart of actual daily values if such data is actually returned by a tool; since none is available here, skip the bar chart and show the line above instead.
53
+ 5. Footer: `→ /luckiest charms`
54
+
55
+ Example:
56
+
57
+ ```
58
+ Charms
59
+ balance 130
60
+ History view coming soon.
61
+ → /luckiest charms
62
+ ```
63
+
64
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
65
+
66
+ ## Step 3: Recommend next action
67
+
68
+ End your response with exactly one line, nothing after it:
69
+
70
+ Next: /luckiest home
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: luckiest-finish
3
- description: Wrap up a completed Luckiest plan: recap what shipped, close it out, award charms. Use when the user says /luckiest finish, luckiest finish, or all plan tasks are done.
3
+ description: "Wrap up a completed Luckiest plan: recap what shipped, close it out, award charms. Use when the user says /luckiest finish, luckiest finish, or all plan tasks are done."
4
4
  ---
5
5
 
6
6
  Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: luckiest-go
3
- description: Run the active Luckiest plan, one task at a time, checked as it goes. Use when the user says /luckiest go, luckiest go, or wants to continue their staged Luckiest plan.
3
+ description: "Run the active Luckiest plan, one task at a time, checked as it goes. Use when the user says /luckiest go, luckiest go, or wants to continue their staged Luckiest plan."
4
4
  ---
5
5
 
6
6
  Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
@@ -63,7 +63,7 @@ Research subagents (looking something up, exploring the codebase) are always all
63
63
 
64
64
  Take the ready tasks one at a time, in order. For each one:
65
65
 
66
- 1. First, turn the task into a tight working prompt with the `luckiest-prompt-rewrite` skill, targeting whoever will do the work (yourself, or the subagent and its model from Step 2). Use that rewritten prompt to do the task. If the skill is not installed, write a clear prompt yourself and continue. Do this before every task, in both default and fast mode.
66
+ 1. If the task is being handed to a subagent (fast mode), first turn it into a tight working prompt with the `luckiest-prompt-rewrite` skill, targeting that subagent and its model from Step 2; if the skill is not installed, write a clear prompt yourself. When you are doing the task yourself, skip the rewrite and start working; the task title and its "done means..." line are the prompt.
67
67
  2. Do the work using the task's suggested skill. If that skill is installed, invoke it via the Skill tool. If it isn't installed, do the work directly without it.
68
68
  3. Check your result against the task's "done means..." line. Don't move on until it's actually met.
69
69
  4. If the result is something the user can try themselves (a page, a feature, a flow), ask with the AskUserQuestion tool so they can click instead of typing. Question: "Try it yourself, does it work?" Options: "Works" and "Needs fixes" (keep the "Other" free-text choice available). Wait for their answer.
@@ -74,6 +74,9 @@ Only move to the next ready task once the current one is applied and verified (o
74
74
 
75
75
  After a task passes and is verified, run a quick automation check. Ask yourself: was this task repeatable, rule-based, or the kind of thing that will come up again? If yes, offer it with the AskUserQuestion tool so the user can click instead of typing. Question: "This looks worth automating. Turn it into a skill you can schedule or run as a routine?" Options: "Automate it" and "Skip" (keep the "Other" free-text choice available). Only offer, never build it without a yes. If they say yes, create the skill (with the skill-builder or skill-creator skill) and set it up to run on a schedule or as a routine. If the task was a one-off, skip the offer and move on.
76
76
 
77
+
78
+ Shell note: always quote file paths in shell commands. Paths with parentheses or brackets (for example `app/(public)/orders`) break zsh globbing when unquoted and waste turns on retries. Prefer the dedicated file tools (Read, Glob, Grep) over shell listing commands when either works.
79
+
77
80
  ## Step 4: Stop conditions
78
81
 
79
82
  Pause and ask the user before doing any of the following, even if it seems like the obvious next step:
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: luckiest-helpers
3
+ description: "See who in your Luckiest tribe needs a hand right now, and claim a request to help. Use when the user says /luckiest helpers, luckiest helpers, or asks who needs help."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ Chart grammar for any dashboard output in this skill:
9
+
10
+
11
+ All dashboard commands use this grammar for rendering data visualizations.
12
+
13
+ ## Grammar Rules
14
+
15
+ Render dashboards as fenced code blocks using this grammar:
16
+ - Section box: title line, then content, no borders needed beyond blank lines.
17
+ - Horizontal bar: `█` for filled, `░` for empty, width 20 chars, value right-aligned.
18
+ - Numbers: aligned columns, thousands separators.
19
+ - Range header when applicable: `[ 7 Days ] 30 Days All` with the active range bracketed.
20
+ - Footer line naming the drill-down command, e.g. `→ /luckiest wishes 30d`.
21
+
22
+ ## Example
23
+
24
+ ```
25
+ Wishes [ 7 Days ]
26
+ balance 42 earned 12 spent 5
27
+ 06-28 ████████░░░░░░░░░░░░ 4
28
+ 06-29 ██████████████░░░░░░ 7
29
+ 07-01 ██░░░░░░░░░░░░░░░░░░ 1
30
+ → /luckiest wishes 30d
31
+ ```
32
+
33
+ ## Implementation Notes
34
+
35
+ - Each bar is exactly 20 filled/empty blocks.
36
+ - Values are right-aligned after the bar.
37
+ - Column headers are spaced evenly with at least 2 spaces between.
38
+ - The footer command should match the context (e.g., `/luckiest wishes 30d` for a wishes dashboard).
39
+ - Use single-space line breaks between sections for clarity.
40
+
41
+ ## Step 1: Get the data
42
+
43
+ Call the `overview` tool from the luckiest MCP server to get the `openAssists` count. If an assist listing tool is available that returns the actual open requests (title, poster, wish reward, and id for each), use it and prefer that list over the raw count. In v1 a per-request listing may not be available through the MCP server: in that case, do not invent requests. Show the count and point the user to the full board, as described in Step 2.
44
+
45
+ ## Step 2: Render the open requests
46
+
47
+ If the count is zero and no requests come back, output nothing except:
48
+
49
+ ```
50
+ No open requests right now.
51
+ ```
52
+
53
+ Then end with:
54
+
55
+ ```
56
+ Next: /luckiest home
57
+ ```
58
+
59
+ Do not proceed further.
60
+
61
+ If you have the count but no per-request details (no listing tool available), render one fenced block with the count and an honest pointer, then stop:
62
+
63
+ ```
64
+ Needs Help
65
+ open requests 3
66
+ Full board and claiming at luckiest.co/dashboard
67
+ → /luckiest home
68
+ ```
69
+
70
+ and end with `Next: open luckiest.co to claim a request`.
71
+
72
+ If there are open requests with details, render one fenced code block following the chart-renderer grammar:
73
+
74
+ 1. Title line: `Needs Help (X open)` where X is the number of requests actually listed.
75
+ 2. One entry per request, each showing:
76
+ - Title of the request
77
+ - Poster name
78
+ - Wish reward, right-aligned, e.g. `reward 8 wishes`
79
+ - A claim line directly under it: `→ tell me "claim <id>" and I'll pick it up with respond_to_assist`
80
+
81
+ Example:
82
+
83
+ ```
84
+ Needs Help (2 open)
85
+ Fix the onboarding copy posted by Priya reward 8 wishes
86
+ → tell me "claim a12" and I'll pick it up with respond_to_assist
87
+
88
+ Review the pricing page posted by Marcus reward 5 wishes
89
+ → tell me "claim a13" and I'll pick it up with respond_to_assist
90
+ ```
91
+
92
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term. Do not fabricate requests, posters, or rewards beyond what the tools return.
93
+
94
+ ## Step 3: Recommend next action
95
+
96
+ End your response with exactly one line, nothing after it:
97
+
98
+ Next: tell me "claim <id>" for the request you want to help with
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: luckiest-home
3
+ description: "The Luckiest community dashboard: wishes and charms, plan progress, tribe pulse, and who needs help. Use when the user says /luckiest home, luckiest home, or asks for their Luckiest dashboard."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ Chart grammar for any dashboard output in this skill:
9
+
10
+
11
+ All dashboard commands use this grammar for rendering data visualizations.
12
+
13
+ ## Grammar Rules
14
+
15
+ Render dashboards as fenced code blocks using this grammar:
16
+ - Section box: title line, then content, no borders needed beyond blank lines.
17
+ - Horizontal bar: `█` for filled, `░` for empty, width 20 chars, value right-aligned.
18
+ - Numbers: aligned columns, thousands separators.
19
+ - Range header when applicable: `[ 7 Days ] 30 Days All` with the active range bracketed.
20
+ - Footer line naming the drill-down command, e.g. `→ /luckiest wishes 30d`.
21
+
22
+ ## Example
23
+
24
+ ```
25
+ Wishes [ 7 Days ]
26
+ balance 42 earned 12 spent 5
27
+ 06-28 ████████░░░░░░░░░░░░ 4
28
+ 06-29 ██████████████░░░░░░ 7
29
+ 07-01 ██░░░░░░░░░░░░░░░░░░ 1
30
+ → /luckiest wishes 30d
31
+ ```
32
+
33
+ ## Implementation Notes
34
+
35
+ - Each bar is exactly 20 filled/empty blocks.
36
+ - Values are right-aligned after the bar.
37
+ - Column headers are spaced evenly with at least 2 spaces between.
38
+ - The footer command should match the context (e.g., `/luckiest wishes 30d` for a wishes dashboard).
39
+ - Use single-space line breaks between sections for clarity.
40
+
41
+ ## Step 1: Get the data
42
+
43
+ Call the `overview` tool from the luckiest MCP server. It returns `{ wishes, charms, loop, openAssists, tribePulse }`.
44
+
45
+ ## Step 2: Render the dashboard
46
+
47
+ Render one fenced code block following the chart-renderer grammar, with four boxes in this order. Separate boxes with a blank line.
48
+
49
+ 1. **Wishes + Charms box**
50
+ - Title line: `Wishes & Charms`
51
+ - One line showing the two balances, aligned columns, thousands separators, for example `wishes 42 charms 130`
52
+ - Footer: `→ /luckiest wishes`
53
+
54
+ 2. **Active plan progress box**
55
+ - Title line: `Plan Progress`
56
+ - If `loop` is null, one line: `No plan yet.`
57
+ - If `loop` is present, one progress bar line using `█` (filled) and `░` (empty), exactly 20 chars total, with `done/total` right-aligned, for example `██████░░░░░░░░░░░░ 3/5`, plus the phase name if present.
58
+ - Footer: if `loop` is present, `→ /luckiest go`; if `loop` is null, `→ /luckiest status`
59
+
60
+ 3. **Tribe pulse box**
61
+ - Title line: `Tribe Pulse`
62
+ - One line per entry in `tribePulse`, showing the member name and the raw `event` string exactly as returned. Do not rewrite, embellish, or invent a friendlier phrasing for the event text. If `tribePulse` is empty, one line: `No recent activity.`
63
+ - Footer: `→ /luckiest leaderboard`
64
+
65
+ 4. **Needs help box**
66
+ - Title line: `Needs Help`
67
+ - One line: `open requests X` where X is `openAssists`.
68
+ - Footer: `→ /luckiest helpers`
69
+
70
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
71
+
72
+ ## Step 3: Recommend next action
73
+
74
+ End your response with exactly one line, nothing after it, based on whether a plan is active:
75
+
76
+ - If `loop` is present (active plan): `Next: /luckiest go`
77
+ - If `loop` is null (no active plan): `Next: /luckiest plan`
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: luckiest-leaderboard
3
+ description: "See how the Luckiest tribe ranks: top scores, one bar chart. Use when the user says /luckiest leaderboard, luckiest leaderboard, or asks for tribe rankings."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ Chart grammar for any dashboard output in this skill:
9
+
10
+
11
+ All dashboard commands use this grammar for rendering data visualizations.
12
+
13
+ ## Grammar Rules
14
+
15
+ Render dashboards as fenced code blocks using this grammar:
16
+ - Section box: title line, then content, no borders needed beyond blank lines.
17
+ - Horizontal bar: `█` for filled, `░` for empty, width 20 chars, value right-aligned.
18
+ - Numbers: aligned columns, thousands separators.
19
+ - Range header when applicable: `[ 7 Days ] 30 Days All` with the active range bracketed.
20
+ - Footer line naming the drill-down command, e.g. `→ /luckiest wishes 30d`.
21
+
22
+ ## Example
23
+
24
+ ```
25
+ Wishes [ 7 Days ]
26
+ balance 42 earned 12 spent 5
27
+ 06-28 ████████░░░░░░░░░░░░ 4
28
+ 06-29 ██████████████░░░░░░ 7
29
+ 07-01 ██░░░░░░░░░░░░░░░░░░ 1
30
+ → /luckiest wishes 30d
31
+ ```
32
+
33
+ ## Implementation Notes
34
+
35
+ - Each bar is exactly 20 filled/empty blocks.
36
+ - Values are right-aligned after the bar.
37
+ - Column headers are spaced evenly with at least 2 spaces between.
38
+ - The footer command should match the context (e.g., `/luckiest wishes 30d` for a wishes dashboard).
39
+ - Use single-space line breaks between sections for clarity.
40
+
41
+ ## Step 1: Get the data
42
+
43
+ Call the `tribe_leaderboard` tool from the luckiest MCP server. If the tool accepts a range argument and the user specified one (e.g. `/luckiest leaderboard 30d`), pass it through. Otherwise call it with no range argument.
44
+
45
+ ## Step 2: Render the leaderboard
46
+
47
+ Render one fenced code block following the chart-renderer grammar.
48
+
49
+ 1. **Range header**: only include a `[ 7 Days ] 30 Days All`-style range header if the tool's response indicates it supports ranges (e.g. it echoes back a range or accepts one). If there is no evidence the tool supports ranges, omit the header entirely. Do not invent range options.
50
+
51
+ 2. **Ranked bar chart**: one line per member, in rank order, with columns for rank, name, and a horizontal bar representing score. Use `█` for filled, `░` for empty, width 20 chars, value right-aligned. For example:
52
+
53
+ ```
54
+ Tribe Leaderboard
55
+ 1 Priya ████████████████░░░░ 820
56
+ 2 Sam ██████████████░░░░░░ 710
57
+ 3 Marcus ████████░░░░░░░░░░░░ 405
58
+ → /luckiest leaderboard
59
+ ```
60
+
61
+ 3. **Movement arrows**: only add a movement indicator (e.g. `▲2`, `▼1`, `=`) next to a member's name if the tool response includes prior-rank data for that member. If no prior-rank data is present anywhere in the response, omit movement indicators entirely for all members. Do not fabricate or estimate movement.
62
+
63
+ 4. **Footer**: last line in the block is `→ /luckiest leaderboard` (or the range-qualified form if a range was passed, e.g. `→ /luckiest leaderboard 30d`).
64
+
65
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
66
+
67
+ ## Step 3: Recommend next action
68
+
69
+ End your response with exactly one line, nothing after it:
70
+
71
+ Next: /luckiest helpers
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: luckiest-merge
3
+ description: "Merge two overlapping Luckiest skills into one, after the user reviews the diff. Use when the user says /luckiest merge, luckiest merge, or wants to combine overlapping skills."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ ## Step 1: Get the two skill ids
9
+
10
+ If the user named both skills (e.g. `/luckiest merge luckiest-copywriting their-copy-skill`), use those as `ourSkillId` and `theirSkillId`. Otherwise ask which two skills to merge, or point them to `/luckiest overlaps` to find a pair first.
11
+
12
+ ## Step 2: Draft the merge
13
+
14
+ Call the `draft_merge` tool from the luckiest MCP server with `{ ourSkillId, theirSkillId }`.
15
+
16
+ This does not install or archive anything yet. Show the user the returned diff plainly, as a fenced code block. Do not summarize it away, they need to see exactly what changes.
17
+
18
+ Ask exactly one approval question:
19
+
20
+ "Use this merged version? yes / no"
21
+
22
+ Wait for the answer.
23
+
24
+ - If no, stop here. End with the wrap-up line in Step 4.
25
+ - If yes, continue to Step 3.
26
+
27
+ ## Step 3: Apply the merge
28
+
29
+ Call the `apply_merge` tool from the luckiest MCP server with `{ ourSkillId, theirSkillId, mergedName, mergedContent }`, using the merged name and content from the draft in Step 2.
30
+
31
+ Tell the user plainly what happened: the two original skill directories were archived (moved to `~/.claude/luckiest-archive/`, never deleted) and the merged skill was installed under `mergedName`.
32
+
33
+ ## Step 4: Wrap up
34
+
35
+ End your response with exactly one line, nothing after it:
36
+
37
+ ```
38
+ Next: /luckiest skills
39
+ ```
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: luckiest-overlaps
3
+ description: "Find installed Luckiest skills that overlap with your own, and resolve them. Use when the user says /luckiest overlaps, luckiest overlaps, or asks about duplicate skills."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ ## Step 1: Pick a skill to check
9
+
10
+ If the user named a skill (e.g. `/luckiest overlaps luckiest-copywriting`), use that as `skillId`. Otherwise, list the installed `luckiest-*` skills (same discovery as `/luckiest skills`, directories under `~/.claude/skills/`) and ask which one to check.
11
+
12
+ ## Step 2: Scan
13
+
14
+ Call the `scan_overlaps` tool from the luckiest MCP server with `{ skillId }`.
15
+
16
+ If it returns no overlapping pairs, output exactly:
17
+
18
+ ```
19
+ No overlaps found for <skillId>.
20
+ ```
21
+
22
+ Then skip to Step 4.
23
+
24
+ ## Step 3: Show what overlaps and offer a resolution
25
+
26
+ List each overlapping pair plainly, one per entry, showing the other skill's id and its tag-overlap score (and description-similarity score if the tool returned one). Do not invent a score if none was returned.
27
+
28
+ ```
29
+ Overlaps with <skillId>:
30
+ • <theirSkillId> tag overlap 0.82
31
+ ```
32
+
33
+ For each pair, tell the user their three options in plain terms and how to pick one:
34
+
35
+ - "keep both" — leave both installed, the router picks the best fit per task.
36
+ - "shadow" — yours stays authoritative, theirs becomes a fallback.
37
+ - "merge" — draft a combined skill for review (nothing installs yet).
38
+
39
+ Tell them to reply with one of those words plus which pair, e.g. `"merge with <theirSkillId>"`.
40
+
41
+ If the user picks "keep both" or "shadow", call `resolve_overlap` with `{ ourSkillId, theirSkillId, resolution }` using their choice, then confirm what happened in one line.
42
+
43
+ If the user picks "merge", do not call `resolve_overlap` here. Instead tell them to run `/luckiest merge <skillId> <theirSkillId>` to draft and review it.
44
+
45
+ ## Step 4: Wrap up
46
+
47
+ End your response with exactly one line, nothing after it:
48
+
49
+ ```
50
+ Next: /luckiest skills
51
+ ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: luckiest-plan
3
- description: Plan your next piece of work with Luckiest. Guided questions, then a staged plan Claude can run. Use when the user says /luckiest plan, luckiest plan, or wants to plan work with their Luckiest tribe.
3
+ description: "Plan your next piece of work with Luckiest. Guided questions, then a staged plan Claude can run. Use when the user says /luckiest plan, luckiest plan, or wants to plan work with their Luckiest tribe."
4
4
  ---
5
5
 
6
6
  Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
@@ -49,7 +49,9 @@ Call the `status` tool from the luckiest MCP server with that `project` value.
49
49
 
50
50
  ## Step 3: Run the interview
51
51
 
52
- Open the interview with a short line that says no plan is active and you are starting the interview.
52
+ If the user's invocation already states the outcome they want (they passed arguments describing a goal, a feature, or a problem to solve), skip the interview question entirely. Say in one line that you are planning from what they gave you, use their stated outcome directly, and jump ahead to drafting the task list below. The approval question in Step 4 still runs; it is the only question they get.
53
+
54
+ Otherwise, open the interview with a short line that says no plan is active and you are starting the interview.
53
55
 
54
56
  Then ask question 1 using the AskUserQuestion tool so the user can click an answer instead of typing one. Do not put the examples in plain text for them to copy. Present them as selectable options:
55
57
 
@@ -63,7 +65,7 @@ Use the answer (plus the brief, if present) to shape a draft task list of 3 to 7
63
65
 
64
66
  Include non-coding work too. Marketing, content, design, research, and ops tasks belong in the plan alongside code. Never drop a task just because it is not a coding task; route it to its matching skill like any other.
65
67
 
66
- For each draft task, call the `skill_router` tool from the luckiest MCP server. It returns `skills` (matching owned skills) and `who` (up to 3 tribe members who finished a similar task before). Attach the suggested skill(s) to the task, and attach `who` so the plan can carry who has done this kind of work.
68
+ Route all draft tasks in ONE `skill_router` call from the luckiest MCP server: pass `prompts` as an array of every task title. It returns `results`, one entry per task with `skills` (matching owned skills) and `who` (up to 3 tribe members who finished a similar task before). Attach the suggested skill(s) to each task, and attach `who` so the plan can carry who has done this kind of work. If the server rejects `prompts` (older server), fall back to one `skill_router` call per task, issued in parallel in a single message, never one at a time.
67
69
 
68
70
  For each task, state a one-line "done means..." in chat (not in the title, not stored anywhere) so the user sees what complete looks like for that task. When `who` is not empty, add a short line naming those people, for example "Done before by: **Sam**, **Alex**."
69
71
 
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: luckiest-skills
3
+ description: "Your Luckiest skills: list what is installed, pull new purchases. Use when the user says /luckiest skills, luckiest skills, or asks what Luckiest skills they have."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ If there is no shell or filesystem on this surface (web chat), skip any step that runs a command or reads or writes a local file, and tell the user that step needs Claude Code or Cowork.
9
+
10
+ ## Step 1: List installed luckiest skills
11
+
12
+ First, identify all directories in `~/.claude/skills/` that match the pattern `luckiest-*`. For each one:
13
+
14
+ 1. Read its `SKILL.md` file
15
+ 2. Extract the one-line `description:` value from the YAML frontmatter
16
+ 3. Display the skill name and description as a clean list
17
+
18
+ Format each line as:
19
+ ```
20
+ • <skill-name>: <one-line description>
21
+ ```
22
+
23
+ If no luckiest skills are installed, output:
24
+ ```
25
+ No luckiest skills installed yet. Use /luckiest skills sync to pull your purchases from luckiest.co.
26
+ ```
27
+
28
+ Then jump to Step 3.
29
+
30
+ ## Step 2: Offer sync
31
+
32
+ After the list, add a blank line, then this prompt:
33
+
34
+ ```
35
+ You can pull newly purchased skills by replying "sync" below.
36
+ ```
37
+
38
+ ## Step 3: Handle sync request
39
+
40
+ If the user replies "sync" or similar intent:
41
+
42
+ 1. Run this command via Bash: `npx luckiest-co --sync-only`
43
+ 2. Report what was added (skill names and versions) from the command output
44
+ 3. If no new skills were synced, acknowledge that the installation is already up to date
45
+
46
+ If the user does not request sync, skip this step.
47
+
48
+ ## Step 4: Next line
49
+
50
+ End your response with exactly one line, nothing after it:
51
+
52
+ ```
53
+ Next: /luckiest plan
54
+ ```
55
+
56
+ Never modify or delete any installed skills. This command is read-only except for the sync operation.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: luckiest-start
3
+ description: "A short interview about your project that writes your Brand Brief. Use when the user says /luckiest start, luckiest start, or wants to set up Luckiest for a project."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ If there is no shell or filesystem on this surface (web chat), skip any step that runs a command or reads or writes a local file, and tell the user that step needs Claude Code or Cowork.
9
+
10
+ ## Step 1: Check for an existing brief
11
+
12
+ Check whether `.luckiest/BRIEF.md` exists in the current project.
13
+
14
+ - If it exists, read it and show the user a short summary (what they're building, who it's for, what winning looks like). Then ask: "Keep this brief as is, or update it?" Wait for their answer.
15
+ - If they choose to keep it, skip straight to the sync step below and end the command.
16
+ - If they choose to update it, continue to the interview below, but only ask about the sections they want to change.
17
+ - If it does not exist, continue to the interview below.
18
+
19
+ Never overwrite `.luckiest/BRIEF.md` silently. The user always gets to see what's there first and decide.
20
+
21
+ ## Step 2: Run the interview
22
+
23
+ Ask the following questions ONE at a time, in order, waiting for the answer before asking the next. There are at most 6 questions. Tell the user up front that any question can be skipped by answering "skip."
24
+
25
+ 1. What are you building?
26
+ 2. Who is it for?
27
+ 3. What does winning look like in 30 days?
28
+ 4. What tone or voice should this have?
29
+ 5. Is there anything that must not change?
30
+ 6. Any links to share (designs, docs, prior work)?
31
+
32
+ Keep the tone conversational, not a form. Ask one question, read the reply, then move to the next. Don't dump all six at once.
33
+
34
+ ## Step 3: Write the brief
35
+
36
+ Read `templates/BRIEF.md` (in this plugin) for the section structure. Each section carries an HTML-comment prompt like `<!-- filled from the /luckiest start interview -->`. Fill each section in using the interview answers, in the user's own words where possible. If the user skipped a question, leave that section's `<!-- ... -->` comment in place rather than inventing content.
37
+
38
+ Write the result to `.luckiest/BRIEF.md` in the current project (create the `.luckiest/` directory if it doesn't exist).
39
+
40
+ ## Step 4: Sync
41
+
42
+ Call the `pause` tool from the luckiest MCP server with a reason like: `Brief created: <one-line summary of what they're building>`. This notes in the session bookmark that the brief now exists.
43
+
44
+ ## Step 5: Wrap up
45
+
46
+ End your response with exactly one line, nothing after it:
47
+
48
+ Next: /luckiest plan to plan your first work.
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: luckiest-status
3
+ description: "Where you are in your Luckiest plan: progress, tasks, and your one next step. Use when the user says /luckiest status, luckiest status, or asks where their plan stands."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ Chart grammar for any dashboard output in this skill:
9
+
10
+
11
+ All dashboard commands use this grammar for rendering data visualizations.
12
+
13
+ ## Grammar Rules
14
+
15
+ Render dashboards as fenced code blocks using this grammar:
16
+ - Section box: title line, then content, no borders needed beyond blank lines.
17
+ - Horizontal bar: `█` for filled, `░` for empty, width 20 chars, value right-aligned.
18
+ - Numbers: aligned columns, thousands separators.
19
+ - Range header when applicable: `[ 7 Days ] 30 Days All` with the active range bracketed.
20
+ - Footer line naming the drill-down command, e.g. `→ /luckiest wishes 30d`.
21
+
22
+ ## Example
23
+
24
+ ```
25
+ Wishes [ 7 Days ]
26
+ balance 42 earned 12 spent 5
27
+ 06-28 ████████░░░░░░░░░░░░ 4
28
+ 06-29 ██████████████░░░░░░ 7
29
+ 07-01 ██░░░░░░░░░░░░░░░░░░ 1
30
+ → /luckiest wishes 30d
31
+ ```
32
+
33
+ ## Implementation Notes
34
+
35
+ - Each bar is exactly 20 filled/empty blocks.
36
+ - Values are right-aligned after the bar.
37
+ - Column headers are spaced evenly with at least 2 spaces between.
38
+ - The footer command should match the context (e.g., `/luckiest wishes 30d` for a wishes dashboard).
39
+ - Use single-space line breaks between sections for clarity.
40
+
41
+ Project key for luckiest MCP plan tool calls: if a shell is available, run `git config --get remote.origin.url` and normalize to `host/owner/repo` (lowercase, no `.git`); if not a git repo, use the absolute path from `pwd`. If there is no shell at all (web chat, Cowork), omit `project` entirely. Use the same value on every plan tool call this whole session.
42
+
43
+ ## Step 1: Check for a plan
44
+
45
+ Derive the project key as described in the project key rules above, then call the `status` tool from the luckiest MCP server with that `project` value so you read this project's plan and not another one.
46
+
47
+ If the returned state is null (no active plan), output nothing except these two lines, in order:
48
+
49
+ ```
50
+ No plan yet. Start with /luckiest plan.
51
+ ```
52
+
53
+ Then end with:
54
+
55
+ ```
56
+ Next: /luckiest plan
57
+ ```
58
+
59
+ Do not proceed further.
60
+
61
+ ## Step 2: Render the status dashboard
62
+
63
+ If a plan exists, render one fenced code block following the chart-renderer grammar. The block MUST include:
64
+
65
+ 1. **Plan phase and header**: First line shows the plan's phase name (if present) or a generic title like "Your Work".
66
+ 2. **Progress bar**: One line with format `█` (filled) and `░` (empty) chars, exactly 20 chars total, with the count `done/total` right-aligned. Example: `██████░░░░░░░░░░░░ 3/5`
67
+ 3. **Task lines**: One line per task in the plan's task list. Each line shows:
68
+ - Task title (truncate to fit on line)
69
+ - Status glyph: `✓` for done, `▸` for doing, `·` for ready, `?` for assist
70
+ 4. **Pass rate (if any)**: If the state includes any verified task results, add a line showing pass rate in the format `pass rate: X/Y` where X is completed verifications and Y is total tasks.
71
+ 5. **Bookmark line (if paused)**: If the state includes a bookmark (pause), add a line showing the bookmark message.
72
+ 6. **Footer**: Last line in the block ends with the command to check status again (e.g. `→ /luckiest status`).
73
+
74
+ Use only the user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
75
+
76
+ Map each task's status to a glyph (these are the task status values, not the plan position):
77
+ - "done" -> `✓`
78
+ - "doing" -> `▸`
79
+ - "ready" -> `·`
80
+ - "assist" -> `?`
81
+ - "blocked" -> `✗`
82
+
83
+ ## Step 3: Recommend next action
84
+
85
+ End your response with exactly one line, nothing after it, derived from the MCP `nextAction` field:
86
+
87
+ ```
88
+ Next: <nextAction>
89
+ ```
90
+
91
+ If nextAction is null or empty, default to the most logical next step based on the current state (e.g., `Next: /luckiest go` if tasks are ready).
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: luckiest-updates
3
+ description: "Check for updates to your installed Luckiest skills and plugin. Use when the user says /luckiest updates, luckiest updates, or asks if their Luckiest install is current."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ If there is no shell or filesystem on this surface (web chat), skip any step that runs a command or reads or writes a local file, and tell the user that step needs Claude Code or Cowork.
9
+
10
+ ## Step 1: Check for updates
11
+
12
+ Call the `check_updates` tool from the luckiest MCP server.
13
+
14
+ ## Step 2: Report what's available
15
+
16
+ If no updates are available, output exactly:
17
+
18
+ ```
19
+ Everything is up to date.
20
+ ```
21
+
22
+ Then skip to Step 3.
23
+
24
+ If updates are available, list each one plainly, one per line, using only what the tool returns (skill or plugin name, current version, available version). Do not invent version numbers or changelog details that weren't returned. For example:
25
+
26
+ ```
27
+ Updates available:
28
+ • luckiest-copywriting 1.2.0 → 1.3.0
29
+ • luckiest-cro 2.0.1 → 2.1.0
30
+ ```
31
+
32
+ If any update includes a changelog or summary field in the tool response, show it as a short indented line under that entry. Do not fabricate one if it's missing.
33
+
34
+ ## Step 3: Offer to sync
35
+
36
+ If updates were found, add a blank line, then:
37
+
38
+ ```
39
+ You can pull these by replying "sync" below.
40
+ ```
41
+
42
+ If the user replies "sync" or similar intent, run this command via Bash: `npx luckiest-co --sync-only`, then report what was actually updated from the command output.
43
+
44
+ ## Step 4: Wrap up
45
+
46
+ End your response with exactly one line, nothing after it:
47
+
48
+ ```
49
+ Next: /luckiest skills
50
+ ```
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: luckiest-vouch
3
+ description: "Request or approve a warm intro to someone outside your Luckiest tribe. Use when the user says /luckiest vouch, luckiest vouch, or asks for an intro."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ ## Step 1: Figure out the intent
9
+
10
+ - If the user is asking for an intro to someone (e.g. `/luckiest vouch <targetId>`, or "I need a warm intro to X"), go to Step 2.
11
+ - If the user is approving a vouch someone asked them for (e.g. "approve vouch <vouchId>", or they were told about a pending vouch elsewhere), go to Step 3.
12
+ - If neither is clear, ask which one they mean.
13
+
14
+ ## Step 2: Request a warm intro
15
+
16
+ Call the `request_vouch` tool from the luckiest MCP server with `{ targetId }`. If this request is tied to an open assist request, include `assistRequestId` too.
17
+
18
+ This asks a shared 1st-degree tribe member (someone in your direct tribe who also knows the target) to vouch for you before you can reach a 3rd-degree person directly.
19
+
20
+ Report plainly that the request was sent and who needs to approve it, if the tool response says.
21
+
22
+ ## Step 3: Approve a vouch
23
+
24
+ Call the `approve_vouch` tool from the luckiest MCP server with `{ vouchId }`.
25
+
26
+ Confirm plainly that the vouch was approved and the intro can proceed.
27
+
28
+ ## Step 4: Wrap up
29
+
30
+ End your response with exactly one line, nothing after it:
31
+
32
+ ```
33
+ Next: /luckiest helpers
34
+ ```
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: luckiest-wishes
3
+ description: "Your Luckiest wishes balance and recent related activity. Use when the user says /luckiest wishes, luckiest wishes, or asks about their wishes."
4
+ ---
5
+
6
+ Vocabulary rules for all output: plain language, no em dashes, no internal terms. Never surface internal words like PLAN, APPLY, UNIFY, skill_loop, UAT, AC, HANDOFF, DRAFT, DOING, DONE in user-visible output; say plan, go, finish, status, testing, requirements, ready for review, in progress, active, complete instead. End every response with exactly one next-step line in the form `Next: <one action>`.
7
+
8
+ Chart grammar for any dashboard output in this skill:
9
+
10
+
11
+ All dashboard commands use this grammar for rendering data visualizations.
12
+
13
+ ## Grammar Rules
14
+
15
+ Render dashboards as fenced code blocks using this grammar:
16
+ - Section box: title line, then content, no borders needed beyond blank lines.
17
+ - Horizontal bar: `█` for filled, `░` for empty, width 20 chars, value right-aligned.
18
+ - Numbers: aligned columns, thousands separators.
19
+ - Range header when applicable: `[ 7 Days ] 30 Days All` with the active range bracketed.
20
+ - Footer line naming the drill-down command, e.g. `→ /luckiest wishes 30d`.
21
+
22
+ ## Example
23
+
24
+ ```
25
+ Wishes [ 7 Days ]
26
+ balance 42 earned 12 spent 5
27
+ 06-28 ████████░░░░░░░░░░░░ 4
28
+ 06-29 ██████████████░░░░░░ 7
29
+ 07-01 ██░░░░░░░░░░░░░░░░░░ 1
30
+ → /luckiest wishes 30d
31
+ ```
32
+
33
+ ## Implementation Notes
34
+
35
+ - Each bar is exactly 20 filled/empty blocks.
36
+ - Values are right-aligned after the bar.
37
+ - Column headers are spaced evenly with at least 2 spaces between.
38
+ - The footer command should match the context (e.g., `/luckiest wishes 30d` for a wishes dashboard).
39
+ - Use single-space line breaks between sections for clarity.
40
+
41
+ ## Step 1: Get the data
42
+
43
+ Call the `overview` tool from the luckiest MCP server. Use the `wishes` balance and scan `tribePulse` for any entries whose `event` text relates to wishes (earning or spending).
44
+
45
+ ## Step 2: Render the dashboard
46
+
47
+ Render one fenced code block following the chart-renderer grammar:
48
+
49
+ 1. Title line: `Wishes`
50
+ 2. Balance line: `balance X` where X is the `wishes` value from `overview`, right-aligned if paired with other numbers.
51
+ 3. If any wish-related entries exist in `tribePulse`, list them plainly, one per line, using the raw `event` text exactly as returned. Do not invent a friendlier phrasing.
52
+ 4. If there is no daily earn/spend history available (there is no history endpoint in this version), add this exact line: `History view coming soon.` Do not invent daily numbers, trends, or a chart of activity over time. Only render a bar chart of actual daily values if such data is actually returned by a tool; since none is available here, skip the bar chart and show the line above instead.
53
+ 5. Footer: `→ /luckiest wishes`
54
+
55
+ Example:
56
+
57
+ ```
58
+ Wishes
59
+ balance 42
60
+ History view coming soon.
61
+ → /luckiest wishes
62
+ ```
63
+
64
+ Use only user-facing vocabulary. Never surface PLAN, APPLY, UNIFY, DRAFT, DOING, DONE, HANDOFF, or any internal term.
65
+
66
+ ## Step 3: Recommend next action
67
+
68
+ End your response with exactly one line, nothing after it:
69
+
70
+ Next: /luckiest charms