axel-setup 0.2.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.
Files changed (117) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/CONTRIBUTING.md +58 -0
  3. package/LICENSE +21 -0
  4. package/README.md +518 -0
  5. package/agents/api-design.md +51 -0
  6. package/agents/bughunter.md +136 -0
  7. package/agents/changelog.md +89 -0
  8. package/agents/cleanup.md +126 -0
  9. package/agents/compare-branch.md +35 -0
  10. package/agents/cross-repo.md +97 -0
  11. package/agents/db-check.md +14 -0
  12. package/agents/debug.md +47 -0
  13. package/agents/deploy-check.md +100 -0
  14. package/agents/draft-message.md +19 -0
  15. package/agents/excelsior-coordinator.md +75 -0
  16. package/agents/excelsior-verifier.md +94 -0
  17. package/agents/feature.md +48 -0
  18. package/agents/harness-optimizer.md +40 -0
  19. package/agents/incident.md +48 -0
  20. package/agents/linear-task.md +18 -0
  21. package/agents/onboard.md +24 -0
  22. package/agents/perf.md +44 -0
  23. package/agents/production-validator.md +96 -0
  24. package/agents/review.md +113 -0
  25. package/agents/security-check.md +29 -0
  26. package/agents/sprint-summary.md +15 -0
  27. package/agents/tdd-mainder.md +178 -0
  28. package/agents/test-gen.md +39 -0
  29. package/axel-manifest.json +129 -0
  30. package/bin/axel-setup.js +597 -0
  31. package/bootstrap.sh +1087 -0
  32. package/commands/create-pr.md +13 -0
  33. package/commands/daily.md +182 -0
  34. package/commands/deslop.md +13 -0
  35. package/commands/draft-message.md +23 -0
  36. package/commands/eod-review.md +154 -0
  37. package/commands/execute-prp.md +37 -0
  38. package/commands/generate-prp.md +75 -0
  39. package/commands/multi-repo-feature.md +60 -0
  40. package/commands/roadmap.md +31 -0
  41. package/commands/sprint-status.md +486 -0
  42. package/commands/style.md +68 -0
  43. package/commands/visualize.md +17 -0
  44. package/docs/roadmap/multi-runtime.md +73 -0
  45. package/docs/superpowers/plans/2026-06-12-setup-hardening-roadmap.md +61 -0
  46. package/hooks/desktop-notify.sh +26 -0
  47. package/hooks/enforce-agent-model.jq +14 -0
  48. package/hooks/gsd-context-monitor.js +156 -0
  49. package/hooks/linear-lifecycle-sync.sh +112 -0
  50. package/hooks/memory-dedup.sh +122 -0
  51. package/hooks/memory-extractor.sh +218 -0
  52. package/hooks/post-commit-memory-trigger.sh +16 -0
  53. package/hooks/post-commit-verify.sh +41 -0
  54. package/hooks/post-edit-lint.sh +43 -0
  55. package/hooks/precompact-save-context.sh +124 -0
  56. package/hooks/priority-map-staleness.sh +29 -0
  57. package/hooks/proactive-resolver.sh +104 -0
  58. package/hooks/session-auto-title.sh +165 -0
  59. package/hooks/session-checkpoint.sh +97 -0
  60. package/hooks/session-cost-log.sh +77 -0
  61. package/hooks/session-log-action.sh +36 -0
  62. package/hooks/session-log-prompt.sh +25 -0
  63. package/hooks/session-restore.sh +45 -0
  64. package/hooks/session-save.sh +81 -0
  65. package/hooks/session-summarize.sh +154 -0
  66. package/hooks/validate-commit-format.sh +38 -0
  67. package/hooks/weekly-priority-map-review.sh +143 -0
  68. package/install.sh +46 -0
  69. package/package.json +67 -0
  70. package/scripts/ci/bootstrap-dry-run.sh +40 -0
  71. package/scripts/ci/check.sh +65 -0
  72. package/scripts/posthog-snapshot-loader.sh +112 -0
  73. package/skills/context-budget/SKILL.md +86 -0
  74. package/skills/memory-review/SKILL.md +100 -0
  75. package/skills/model-routing/SKILL.md +70 -0
  76. package/skills/posthog-weekly/SKILL.md +271 -0
  77. package/skills/ui-ux-pro-max/SKILL.md +377 -0
  78. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  79. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  80. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  81. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  82. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  83. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  84. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  85. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  86. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  87. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  88. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  89. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  90. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  91. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  92. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  93. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  94. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  95. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  96. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  97. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  98. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  99. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  100. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  101. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  102. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  103. package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  104. package/skills/ui-ux-pro-max/scripts/search.py +114 -0
  105. package/templates/AGENTS.runtime.md +17 -0
  106. package/templates/CLAUDE.md +252 -0
  107. package/templates/claude-monitor.plist +35 -0
  108. package/templates/keybindings.json +13 -0
  109. package/templates/merge-settings.jq +53 -0
  110. package/templates/review-upgrades.md +44 -0
  111. package/templates/settings.json +255 -0
  112. package/templates/statusline-command.sh +182 -0
  113. package/tests/fixtures/hooks/events.json +32 -0
  114. package/tools/session-costs-view.sh +128 -0
  115. package/tools/session-dashboard-gen.sh +369 -0
  116. package/tools/session-live.sh +173 -0
  117. package/tools/session-server.js +441 -0
@@ -0,0 +1,13 @@
1
+ # Create a Pull Request
2
+
3
+ - Check that I'm in a branch other than `main`, `staging`, or `prod`. If not, bail and explain.
4
+ - Run `git status` to see all changes
5
+ - If there's unstaged or staged work that hasn't been committed, commit all relevant code first
6
+ - Follow commit format: `<tipo> (Modelo/Archivo): Mensaje descriptivo`
7
+ - Max 6 files per commit, grouped by model/functionality
8
+ - Use `gh pr create` to open a PR with:
9
+ - Title: `<feature_area>: <Title>` (80 chars or less)
10
+ - Body: TLDR (2 sentences max) + 1-3 bullet points explaining what's changing
11
+ - Always paste the PR link in the response
12
+ - Prepend `GIT_EDITOR=true` to git commands to avoid blocking
13
+ - **NEVER use `--no-verify`**
@@ -0,0 +1,182 @@
1
+ # Daily — Morning Check-in
2
+
3
+ Scan rápido de todo lo que pasó desde el último check. Read-only, no escribe en ningún sistema. Diseñado para arrancar el día en ~2 minutos sabiendo qué pasó y qué necesita atención.
4
+
5
+ ## Configuration (edit this section for your team)
6
+
7
+ Este skill es genérico. Antes de usarlo, edita la sección siguiente con los canales, personas y repositorios de tu equipo. Todo lo marcado como `[OPTIONAL]` puede desactivarse borrando la sección entera si tu equipo no usa ese sistema.
8
+
9
+ ```yaml
10
+ # --- Slack channels to scan (add/remove as needed) ---
11
+ slack_channels:
12
+ - name: "#incidents" # id: Cxxxxxxx
13
+ - name: "#clients" # id: Cxxxxxxx
14
+ - name: "#tech-guild" # id: Cxxxxxxx
15
+
16
+ # --- Slack DMs to scan (privacy gate applies) ---
17
+ slack_dms:
18
+ - name: "PM/CEO" # id: Uxxxxxxx
19
+ - name: "CS Lead" # id: Uxxxxxxx
20
+
21
+ # --- Git repos to scan for PR/commit activity ---
22
+ git_repos:
23
+ - ~/your-org/api-repo
24
+ - ~/your-org/frontend-repo
25
+
26
+ # --- Team member git-email → display-name mapping ---
27
+ team_members:
28
+ - { email: "you@company.com", name: "You" }
29
+ - { email: "teammate@company.com", name: "Teammate" }
30
+
31
+ # --- Optional integrations (delete sections you don't use) ---
32
+ integrations:
33
+ linear: true # requires Linear MCP
34
+ google_calendar: true # requires Google Calendar MCP
35
+ gmail: true # requires Gmail MCP
36
+ intercom: false # [OPTIONAL] requires Intercom MCP — client conversations
37
+ notion: false # [OPTIONAL] requires Notion MCP
38
+ ```
39
+
40
+ **How to customize:** open this file (`~/.claude/commands/daily.md`) and edit the YAML block above. The rest of the skill reads from it. Any section whose integration is `false` or whose MCP is not connected is skipped gracefully.
41
+
42
+ ## Data sources (all read-only, all in parallel)
43
+
44
+ Launch all configured sources concurrently. Skip any section whose integration is `false` or whose MCP is not connected.
45
+
46
+ ### Slack (last 24h or since last check, whichever is longer)
47
+ For each channel in `slack_channels`:
48
+ - New messages, threads without reply, threads needing your attention
49
+ - Highlight messages from team members that require action
50
+
51
+ For each DM in `slack_dms`:
52
+ - Asks pendientes, confirmations, context **work-only** (privacy gate — see Rules below)
53
+
54
+ ### Git (all repos in `git_repos`)
55
+ - `git fetch origin --prune` in each repo
56
+ - PRs merged since last check (`gh pr list --state merged --search "merged:>=DATE"`)
57
+ - PRs opened/updated by anyone (`gh pr list --state open`)
58
+ - New branches pushed
59
+
60
+ ### Linear (if `integrations.linear`)
61
+ - Issues updated since last check
62
+ - New issues created
63
+ - Issues moved to Done (celebrate!)
64
+ - Issues assigned to you still in Todo (nudge)
65
+
66
+ ### Google Calendar (if `integrations.google_calendar`)
67
+ - Today's events with time, title, and meeting link
68
+ - Use `gcal_list_events` for the user's primary calendar, filtered to today
69
+
70
+ ### Gmail (if `integrations.gmail`)
71
+ - Unread or recent emails from the last 24h that are work-relevant
72
+ - Use `gmail_search_messages` with query like `is:unread newer_than:1d`
73
+ - Focus on: emails from clients, from team members, from external services
74
+ - Skip: newsletters, marketing, automated non-actionable notifications
75
+ - For each relevant email: sender, subject, 1-line summary of what it needs
76
+
77
+ ### Intercom `[OPTIONAL]` (if `integrations.intercom`)
78
+ - When a team uses Intercom, it's typically the canonical source for client conversations; internal Slack channels are usually just a mirror of notifications.
79
+ - Last 24h conversations needing attention:
80
+ - Open + unread
81
+ - Priority flagged
82
+ - Conversations with a new customer reply pending a response
83
+ - Tool: `mcp__intercom__search_conversations` with filter `updated_at` last 24h + `state=open`
84
+ - For each relevant conversation: contact name, company, last message, state, 1-line summary
85
+ - **Cross-ref with Slack:** if a conversation also appears forwarded into a Slack client channel, link both (Slack permalink + Intercom URL)
86
+
87
+ ### Notion `[OPTIONAL]` (if `integrations.notion`)
88
+ - Skim relevant pages/databases the team uses as a read-only reference (roadmap, backlog, specs)
89
+ - Never write from `/daily`
90
+
91
+ ## Privacy gate
92
+ DMs pass through a work-vs-personal classifier. Personal content is dropped silently — never logged, quoted, or mentioned. Only work-relevant asks surface.
93
+
94
+ ## Output format
95
+
96
+ ```
97
+ ## Buenos días — [fecha] [día de la semana]
98
+
99
+ ### 📅 Agenda de hoy
100
+ - HH:MM — [título] ([link])
101
+ - (sin reuniones hoy ✨)
102
+
103
+ ### 📧 Emails relevantes (últimas 24h)
104
+ - [sender] — [subject] — [acción necesaria o "solo FYI"]
105
+ - (sin emails relevantes pendientes ✨)
106
+
107
+ ### 📬 Intercom — conversations activas [OPTIONAL section, omit if disabled]
108
+ - [contact — company] — [state] — [acción sugerida o "solo monitoreo"]
109
+ - Cross-ref Slack: [permalink if applicable]
110
+ - (sin conversations que requieran atención ✨)
111
+
112
+ ### 🆕 Qué pasó mientras no estabas
113
+ Bullets cortos por canal/fuente, solo lo que requiere tu atención:
114
+ - [#channel-1]: [resumen o "sin nuevos"]
115
+ - [#channel-2]: [resumen o "sin nuevos"]
116
+ - DM [person]: [resumen work-only o "sin novedades"]
117
+ - Git: [N PRs merged, N PRs opened, branches nuevas relevantes]
118
+ - Linear: [N issues movidas, N nuevas]
119
+
120
+ ### 🔔 Necesita tu respuesta/acción
121
+ Lista priorizada de threads, PRs, asks que esperan algo de ti:
122
+ 1. [canal/fuente] — [qué] — [acción sugerida]
123
+ 2. ...
124
+ (si no hay nada: "Inbox limpio 🟢")
125
+
126
+ ### 🔴 Stoppers activos
127
+ - [ISSUE-ID] — razón — días frenado
128
+ (si no hay: "Sin stoppers 🟢")
129
+
130
+ ### 🎯 Foco sugerido para hoy
131
+ Top 3 acciones de mayor leverage basadas en lo detectado arriba.
132
+ 1. [acción concreta]
133
+ 2. [acción concreta]
134
+ 3. [acción concreta]
135
+ ```
136
+
137
+ ## Phase 2 — Sync systems (after showing the briefing)
138
+
139
+ After presenting the morning briefing to the user, propose system updates detected during the scan. Wait for user confirmation before executing.
140
+
141
+ ### What to detect and propose:
142
+
143
+ **Linear updates** (if enabled):
144
+ - Issues that should move to Done based on git evidence (PR merged to main but Linear still says In Progress/In Review)
145
+ - New items detected in Slack channels without a Linear issue yet → propose CREATE
146
+ - Issues with stale status (no git activity in 7+ days but still marked In Progress) → flag for user
147
+ - Assignee mismatches (git author ≠ Linear assignee) → propose UPDATE_ASSIGNEE
148
+
149
+ **Notion updates** `[OPTIONAL]` (if enabled, existing pages only):
150
+ - Pages whose status is stale vs the reconciled state (e.g. Notion says "In Progress" but Linear/git says Done) → propose update
151
+
152
+ **Slack drafts (ALWAYS draft, never direct send — applies to every channel and DM):**
153
+ - For every thread where a reply is warranted, produce a `slack_send_message_draft`
154
+ - No exceptions, not even for internal channels or teammate DMs
155
+ - The user is the only sender — they review the draft in Slack and send manually
156
+ - Apply tone rules when relevant (non-technical language for client-facing threads)
157
+
158
+ **Intercom proposals** `[OPTIONAL]` (if enabled, read + write):
159
+ - Incidents detected in Slack without an associated Intercom conversation (reported by identifiable customer) → propose `CREATE_INTERCOM_NOTE` on the matching conversation, or flag as "internal incident, no customer link"
160
+ - Forwarded client requests → propose `ADD_INTERCOM_NOTE` on the original conversation with the technical context detected, so the CS lead sees it inside Intercom
161
+ - When an issue is resolved and the customer needs to be notified → propose a **note draft** in the Intercom conversation, **never a direct reply to the customer**
162
+ - **NEVER auto-send in Intercom.** All writes wait for explicit confirmation (`apply 1,3` / `apply all` / `skip`)
163
+
164
+ ### Execution:
165
+ - Print the proposed updates as a numbered list
166
+ - Wait for: `apply all`, `apply 1,3,5`, or `skip`
167
+ - If the user says nothing about syncing, skip — don't block the morning
168
+
169
+ ## Rules
170
+ - **Phase 1 (briefing) is read-only.** The briefing output itself never writes to any system.
171
+ - **Phase 2 (sync) proposes writes** but waits for explicit confirmation before executing.
172
+ - **NEVER direct-send to Slack.** Every Slack message — any channel, any DM, any audience — goes as `slack_send_message_draft`. Zero exceptions. The user is the only sender.
173
+ - **Intercom writes allowed but gated.** Notes are proposed in Phase 2 and wait for confirmation. Never reply directly to a customer.
174
+ - **Fast.** Parallelize everything. Output must be short and scannable.
175
+ - **If a source has no news, say "sin novedades" and move on.** Don't pad with filler text.
176
+ - **Privacy gate applies** same as `/sprint-status`.
177
+ - **Tone:** internal, for the user only. Can use IDs and jargon. Not meant for sharing.
178
+ - **If an EOD review is pending from yesterday**, mention it in the suggested focus.
179
+
180
+ ## Relationship with other skills
181
+ - **`/sprint-status`** — heavy weekly audit with Linear writes. `/daily` is the lightweight daily check that writes nothing.
182
+ - **`/eod-review`** — end-of-day report. `/daily` is the morning input; `/eod-review` is the afternoon output.
@@ -0,0 +1,13 @@
1
+ # Remove AI Code Slop
2
+
3
+ Check the diff against main and remove all AI-generated slop introduced in this branch.
4
+
5
+ This includes:
6
+ - Extra comments that a human wouldn't add or that are inconsistent with the rest of the file
7
+ - Extra defensive checks or try/catch blocks abnormal for that area (especially if called by trusted/validated codepaths)
8
+ - Casts to `any` to get around type issues
9
+ - Unnecessary abstractions or over-engineering for simple operations
10
+ - Redundant type annotations on obvious types
11
+ - Verbose error handling for impossible scenarios
12
+
13
+ Report at the end with only a 1-3 sentence summary of what you changed.
@@ -0,0 +1,23 @@
1
+ # Draft Message
2
+
3
+ Help me structure a message for a difficult or important conversation.
4
+
5
+ ## Input
6
+ Tell me:
7
+ - **Who** is the audience (Samu, equipo, Clemente, cliente, etc.)
8
+ - **What** is the topic
9
+ - **Goal** — what outcome do you want
10
+
11
+ ## Process
12
+
13
+ 1. Organize your key points logically
14
+ 2. Connect technical decisions to business impact where relevant
15
+ 3. Anticipate pushback and prepare responses
16
+ 4. Keep tone professional but direct
17
+
18
+ ## Output Options
19
+ - **Slack-ready** — formatted for copy-paste with clean formatting
20
+ - **Talking points** — bullets for a call/meeting
21
+ - **Email/formal** — structured with subject line
22
+
23
+ Default to Slack-ready unless specified otherwise.
@@ -0,0 +1,154 @@
1
+ # EOD Review — End-of-Day team report
2
+
3
+ Generate an end-of-day report with everything that was done, changed, or moved TODAY. Designed to give non-technical stakeholders (CEO, PM, CS lead) clear visibility into delivery progress without requiring them to read PRs or Linear.
4
+
5
+ The output is a **Slack draft** (never a direct send) ready for the user to review and post. When the target channel is mixed (devs + non-devs), a dual layer is produced: non-technical summary on top, optional technical detail below.
6
+
7
+ ## Configuration (edit this section for your team)
8
+
9
+ Before using this skill, edit the YAML block below with your team's channels, repos, and target audience. Sections marked `[OPTIONAL]` can be deleted if your team does not use that system.
10
+
11
+ ```yaml
12
+ # --- Target channel for the draft (where the report will be posted) ---
13
+ target_channel:
14
+ name: "#tech-guild" # id: Cxxxxxxx
15
+ audience: "mixed" # "mixed" | "technical" | "non-technical"
16
+
17
+ # --- Slack channels to scan for context on what happened today ---
18
+ slack_channels:
19
+ - name: "#incidents"
20
+ - name: "#tech-guild"
21
+ - name: "#clients"
22
+
23
+ # --- Git repos to scan for "what was done today" ---
24
+ git_repos:
25
+ - ~/your-org/api-repo
26
+ - ~/your-org/frontend-repo
27
+
28
+ # --- Team member git-email → display-name mapping ---
29
+ team_members:
30
+ - { email: "you@company.com", name: "You" }
31
+ - { email: "teammate@company.com", name: "Teammate" }
32
+
33
+ # --- Optional integrations ---
34
+ integrations:
35
+ linear: true # requires Linear MCP
36
+ intercom: false # [OPTIONAL] requires Intercom MCP — client-facing metrics
37
+ notion: false # [OPTIONAL] never queried from this command
38
+ ```
39
+
40
+ ## When to use
41
+
42
+ - At the end of the workday, before closing
43
+ - When your PM/CEO asks "what was done today"
44
+ - Before a standup or sync where you need to show daily progress
45
+
46
+ ## Data sources (all read-only, all in parallel)
47
+
48
+ ### Git (primary source for "what was done today")
49
+ For each repo in `git_repos`:
50
+ - `git fetch origin --prune`
51
+ - PRs merged TODAY by anyone: `gh pr list --state merged --search "merged:>=TODAY"`
52
+ - PRs opened TODAY
53
+ - Commits pushed to staging/feature branches TODAY
54
+ - Map authors via `team_members` (git email → display name)
55
+
56
+ ### Linear (if `integrations.linear`)
57
+ - Issues moved to Done today
58
+ - Issues moved to In Progress today (started)
59
+ - New issues created today
60
+ - Comments added today
61
+
62
+ ### Slack (secondary — for context)
63
+ For each channel in `slack_channels`:
64
+ - Any new incidents today (resolved or open)
65
+ - Important messages (asks from leadership, decisions)
66
+ - New client requests today (count + brief summary)
67
+
68
+ ### Intercom `[OPTIONAL]` (if `integrations.intercom` — primary source for client-facing metrics)
69
+ - Conversations with activity TODAY: `mcp__intercom__search_conversations` filtered by `updated_at >= today`
70
+ - Count: created today / resolved today / still open / priority flagged
71
+ - Cross-ref with Slack client channels: every forwarded thread should have its real conversation in Intercom — confirm counts match. If Slack > Intercom, flag "possible phantom forward or deleted conversation". If Intercom > Slack, flag "tickets not visible in Slack"
72
+ - For each conversation resolved today: one plain-language line describing the fix (input for the "Delivered today" section)
73
+
74
+ ### Notion `[OPTIONAL]`
75
+ - Not queried. Linear is the source of truth.
76
+
77
+ ## Privacy gate
78
+ Same as `/sprint-status`. DMs are NOT scanned for EOD review — only channel content.
79
+
80
+ ## Output format
81
+
82
+ The output is a **Slack draft** in `target_channel`. **NOT a direct send.**
83
+
84
+ ```
85
+ 📋 *EOD Review — [fecha]*
86
+
87
+ *🟢 Entregado hoy (merged a main)*
88
+ • *[Feature/fix corto]* — [1 línea de qué es] ([repo])
89
+ • ...
90
+ (si nada se mergeó hoy: "Sin deploys hoy — día de desarrollo/review")
91
+
92
+ *🔄 Avanzado hoy (staging / branches / PRs abiertos)*
93
+ • *[Feature/fix]* — [estado: PR abierto / pushed a staging / en desarrollo]
94
+ • ...
95
+
96
+ *🐛 Incidents*
97
+ • [resumen o "Sin incidents nuevos hoy ✅"]
98
+
99
+ *📬 Requests de clientes* [OPTIONAL section — show only if Intercom OR client channels enabled]
100
+ • [N] conversations nuevas hoy · [M] resueltas hoy · [K] abiertas pendientes
101
+ • Top nuevas (plain-language): [1-3 líneas]
102
+ • ⚠ Si hay mismatch Intercom↔Slack, flag aquí
103
+ (o "Sin requests nuevas ✅")
104
+
105
+ *🔴 Stoppers*
106
+ • [ISSUE-ID] — [razón] — [días frenado]
107
+ (o "Sin stoppers 🟢")
108
+
109
+ *🎯 Foco mañana*
110
+ • [1-3 bullets de qué sigue]
111
+ ```
112
+
113
+ ## Rules
114
+
115
+ ### Content rules
116
+ - **Only TODAY.** Do not repeat yesterday or summarize the week — use `/sprint-status` for that.
117
+ - **Count work from THE WHOLE TEAM, not just the user.** If a teammate merged something today, it goes in. If another teammate resolved an incident, it goes in. This is a team report.
118
+ - **Staging-promote PRs** (branches that only promote staging → main) do NOT count as features — they are operational. If the real content was already reported earlier, skip.
119
+
120
+ ### Tone rules (audience-aware)
121
+
122
+ The tone adapts to `target_channel.audience`:
123
+
124
+ **If `audience: "non-technical"`** (CEO, PM, CS, investors):
125
+ - **Always plain-language.** Each item answers: "what can the customer do now that they couldn't before?" or "what problem do they no longer have?"
126
+ - **NEVER mention:** PR#, ticket IDs, class/service names, branch names, internal jargon.
127
+ - Examples:
128
+ - ❌ "Merged PR #462 fix (ProcessCvSubmissionJob): Deduplicate apply_portals candidates by email/phone"
129
+ - ✅ "Fixed a problem where candidates arriving from InfoJobs were duplicated inside the hiring process"
130
+ - ❌ "Fix SSRF allowlist guard in server-side fetchWithAuth"
131
+ - ✅ "Closed a server-side security vulnerability"
132
+ - Short. Target: 10-15 lines. Max 25 lines. If the day was long, prioritize the 5 most important items and close with "plus N minor maintenance/bugfix items".
133
+
134
+ **If `audience: "technical"`** (dev-only channel):
135
+ - Can use PR#, ticket IDs, branch names, jargon.
136
+ - Still keep it concise — readers already know the context.
137
+
138
+ **If `audience: "mixed"`** (dev channel that is also read by leadership/CS):
139
+ - **Dual layer**: for each section, lead with a 1-2 line plain-language translation, then optionally follow with the technical detail underneath.
140
+ - This is the safest default when you're not sure who reads the channel.
141
+
142
+ ### Delivery rules
143
+ - **Always draft, never direct send.** Applies to every channel, no exceptions. The user is the only sender from Slack.
144
+ - **Tag `@here`** at the top only if there's a blocker or a large deploy with customer impact. Don't abuse.
145
+ - **Short and scannable.** See target length per audience above.
146
+
147
+ ### Reminder
148
+ - Send the report before the end of the workday while context is fresh.
149
+ - The `/daily` morning skill can remind the user to run `/eod-review` at the end of the day.
150
+
151
+ ## Relationship with other skills
152
+ - **`/daily`** — morning check (what happened, what needs attention). `/eod-review` is the afternoon close (what was done).
153
+ - **`/sprint-status`** — heavy weekly audit. `/eod-review` is the micro daily report.
154
+ - **Both complement each other:** `/daily` in the morning → work all day → `/eod-review` at 18:00 → draft to team channel.
@@ -0,0 +1,37 @@
1
+ # Execute PRP
2
+
3
+ Ejecuta el PRP especificado: `$ARGUMENTS`
4
+
5
+ Si no se pasa argumento, busca el PRP más reciente en `PRPs/` o pregunta cuál ejecutar.
6
+
7
+ ## Proceso obligatorio
8
+
9
+ ### 1. Lee el PRP completo
10
+ Antes de tocar un solo archivo, lee el PRP entero. Entiende el scope total.
11
+
12
+ ### 2. Lee todos los archivos referenciados en "Context"
13
+ No asumas nada del código existente — lee los archivos mencionados en el PRP.
14
+ Si el PRP dice "sigue el patrón de X", lee X antes de empezar.
15
+
16
+ ### 3. Implementa paso a paso
17
+ Sigue el `Implementation Plan` en orden. Por cada paso:
18
+ - Implementa
19
+ - Si es un bloque lógico completo (modelo, servicio, controller, etc.), haz commit inmediato
20
+ - Commit format: `feat (Modelo/Archivo): Descripción` — max 6 archivos por commit
21
+
22
+ ### 4. Valida al finalizar
23
+ Corre el `Validation Checklist` del PRP ítem por ítem.
24
+ Reporta resultados antes de declarar la feature terminada.
25
+
26
+ ### 5. Marca pasos completados en el PRP
27
+ Actualiza el PRP con ✅ en cada paso del `Implementation Plan` al completarlo.
28
+
29
+ ---
30
+
31
+ ## Reglas de ejecución
32
+
33
+ - **No saltes pasos** — si un paso requiere leer algo primero, léelo
34
+ - **No asumas que el PRP está actualizado** — si encuentras discrepancias con el código real, actualiza el PRP y reporta
35
+ - **Bloqueantes primero** — si algo bloquea la implementación, repórtalo inmediatamente antes de continuar con pasos posteriores
36
+ - **Tests no son opcionales** — el paso de tests es parte de la implementación, no un extra
37
+ - **Nunca `--no-verify`** en ningún commit
@@ -0,0 +1,75 @@
1
+ # Generate PRP
2
+
3
+ Lee `INITIAL.md` en el directorio actual y genera un PRP (Product Requirements Prompt) completo
4
+ que sirva como blueprint de implementación autosuficiente.
5
+
6
+ ## Proceso obligatorio
7
+
8
+ ### 1. Lee INITIAL.md
9
+ Entiende exactamente qué se quiere construir, el contexto de negocio y los criterios de aceptación.
10
+
11
+ ### 2. Explora el codebase sin asumir nada
12
+ Antes de escribir una sola línea del PRP, ejecuta en paralelo:
13
+ - Lee `.claude/rules/` completo para entender todas las restricciones activas
14
+ - Busca con Grep/Glob archivos similares a lo que se va a construir (modelos, servicios, hooks, etc.)
15
+ - Lee los archivos más relevantes que el PRP referenciará como ejemplos
16
+ - Si hay `docs/` con documentación técnica, léela en la sección relevante
17
+
18
+ ### 3. Genera el PRP en `PRPs/<feature-slug>.md`
19
+
20
+ El slug del archivo debe ser kebab-case descriptivo (ej: `PRPs/candidate-enrichment.md`).
21
+
22
+ ---
23
+
24
+ ## Estructura del PRP a generar
25
+
26
+ ```markdown
27
+ # PRP: [Nombre de la Feature]
28
+
29
+ ## Goal
30
+ Qué construir y por qué — conectar con el impacto de negocio en tu proyecto.
31
+
32
+ ## Context
33
+
34
+ ### Archivos clave a leer antes de implementar
35
+ Lista de paths absolutos (relativos al repo) con descripción de por qué son relevantes.
36
+
37
+ ### Patrones a seguir
38
+ Referencias concretas: "sigue el patrón de X para hacer Y" con paths exactos.
39
+
40
+ ### Restricciones activas
41
+ Reglas de `.claude/rules/` que aplican directamente a esta feature (no las repitas, solo referencialas).
42
+
43
+ ## Implementation Plan
44
+
45
+ Pasos ordenados. Cada paso debe tener:
46
+ - Acción concreta
47
+ - Path exacto del archivo
48
+ - Qué leer primero si aplica
49
+
50
+ ### Paso 1: [Nombre]
51
+ ...
52
+
53
+ ### Paso N: Tests
54
+ Qué specs escribir, qué casos cubrir (happy path, edge cases, unauthorized, not found).
55
+
56
+ ## API Contract (si aplica)
57
+ Endpoint, método HTTP, request body, response body, status codes.
58
+
59
+ ## Validation Checklist
60
+ - [ ] Todos los tests pasan (`RAILS_ENV=test bundle exec rspec` o `pnpm check`)
61
+ - [ ] Sin N+1 queries
62
+ - [ ] Lint pasa
63
+ - [ ] Criterios de aceptación de INITIAL.md cumplidos
64
+ - [ ] Soft delete implementado si aplica (Paranoia)
65
+ - [ ] Pundit policy actualizada si aplica
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Principios del PRP
71
+
72
+ - **Autosuficiente**: otro Claude debe poder ejecutarlo sin preguntar nada más
73
+ - **Sin redundancia**: no repetir reglas que ya están en `.claude/rules/`, solo referenciarlas
74
+ - **Específico**: paths concretos, no "algo similar a los servicios existentes"
75
+ - **Honesto**: si algo es incierto, marcarlo como "verificar antes de implementar"
@@ -0,0 +1,60 @@
1
+ # Multi-Repo Feature Coordinator
2
+
3
+ Coordinate a feature that spans multiple repos. Creates a parallel work plan and sequences changes correctly.
4
+
5
+ ## Input
6
+ Describe the feature or provide a Linear issue ID. Example:
7
+ - "Implementar filtro de candidatos por idioma en API y frontend"
8
+ - "MAI-123"
9
+
10
+ ## Steps
11
+
12
+ ### 1. Understand the Feature
13
+ If a Linear issue ID is provided, fetch it with the Linear MCP tool to get full context, acceptance criteria, and comments.
14
+
15
+ ### 2. Impact Analysis
16
+ For each repo, determine:
17
+ - **main-api**: new/modified endpoints, migrations, services, background jobs
18
+ - **frontend-app**: new/modified pages, components, hooks, API calls, i18n keys
19
+ - **ai-service**: new/modified agents, prompts, contracts (only if AI logic involved)
20
+ - **background-service**: new/modified background processing (only if affected)
21
+
22
+ ### 3. API Contract First
23
+ If API changes are needed, define the contract before writing any code:
24
+ ```
25
+ Endpoint: METHOD /api/v1/[resource]
26
+ Auth: required / public
27
+ Request: { field: type }
28
+ Response: { data: { field: type } }
29
+ Errors: 422 { errors: [...] }
30
+ ```
31
+
32
+ ### 4. Sequenced Work Plan
33
+ Output a sequenced plan respecting the dependency order:
34
+ 1. Migrations (API first)
35
+ 2. Backend services + endpoints
36
+ 3. AI/Agent logic (if needed)
37
+ 4. Frontend components + hooks
38
+
39
+ ### 5. Parallel Session Setup
40
+ For large features (3+ files per repo), suggest opening parallel Claude sessions:
41
+
42
+ ```bash
43
+ # Terminal 1 — API
44
+ cd ~/projects/your-api && cl
45
+ # Prompt: "Implement [backend part] following the contract: [contract]"
46
+
47
+ # Terminal 2 — Frontend (can start with mock data)
48
+ cd ~/projects/your-frontend && cl
49
+ # Prompt: "Implement [frontend part] against this API contract: [contract]"
50
+ ```
51
+
52
+ ### 6. Integration Checklist
53
+ Generate a checklist for verifying the full feature works end-to-end:
54
+ - [ ] Migration applied (`RAILS_ENV=development rails db:migrate`)
55
+ - [ ] API endpoint returns correct shape
56
+ - [ ] Frontend displays data correctly
57
+ - [ ] i18n keys added in all locales (en, es, ca, fr)
58
+ - [ ] Specs written and passing
59
+ - [ ] No TypeScript errors (`pnpm typecheck`)
60
+ - [ ] Linear issue updated with implementation notes
@@ -0,0 +1,31 @@
1
+ # Roadmap: Feature & Improvement Suggestions
2
+
3
+ Analyze the codebase and generate a roadmap of potential features and improvements.
4
+
5
+ ## Analysis Steps
6
+
7
+ 1. Scan codebase architecture, patterns, and conventions
8
+ 2. Identify feature gaps and improvement opportunities
9
+ 3. Create phased overview (Quick Wins / Medium Effort / Strategic)
10
+ 4. Ask user which features to plan in detail
11
+
12
+ ## Analysis Focus
13
+
14
+ - Missing common patterns (auth, caching, error handling, logging)
15
+ - Performance optimization opportunities
16
+ - Developer experience improvements
17
+ - User-facing feature enhancements
18
+ - Code quality / refactoring candidates
19
+
20
+ ## Output Format
21
+
22
+ ### Quick Wins (low effort, high impact)
23
+ - Feature: description, estimated effort
24
+
25
+ ### Medium Effort
26
+ - Feature: description, what needs refactoring
27
+
28
+ ### Strategic (architectural changes)
29
+ - Feature: description, dependencies, risks
30
+
31
+ Present as a structured markdown table with columns: Feature | Effort | Impact | Dependencies.