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.
- package/CHANGELOG.md +218 -0
- package/CONTRIBUTING.md +58 -0
- package/LICENSE +21 -0
- package/README.md +518 -0
- package/agents/api-design.md +51 -0
- package/agents/bughunter.md +136 -0
- package/agents/changelog.md +89 -0
- package/agents/cleanup.md +126 -0
- package/agents/compare-branch.md +35 -0
- package/agents/cross-repo.md +97 -0
- package/agents/db-check.md +14 -0
- package/agents/debug.md +47 -0
- package/agents/deploy-check.md +100 -0
- package/agents/draft-message.md +19 -0
- package/agents/excelsior-coordinator.md +75 -0
- package/agents/excelsior-verifier.md +94 -0
- package/agents/feature.md +48 -0
- package/agents/harness-optimizer.md +40 -0
- package/agents/incident.md +48 -0
- package/agents/linear-task.md +18 -0
- package/agents/onboard.md +24 -0
- package/agents/perf.md +44 -0
- package/agents/production-validator.md +96 -0
- package/agents/review.md +113 -0
- package/agents/security-check.md +29 -0
- package/agents/sprint-summary.md +15 -0
- package/agents/tdd-mainder.md +178 -0
- package/agents/test-gen.md +39 -0
- package/axel-manifest.json +129 -0
- package/bin/axel-setup.js +597 -0
- package/bootstrap.sh +1087 -0
- package/commands/create-pr.md +13 -0
- package/commands/daily.md +182 -0
- package/commands/deslop.md +13 -0
- package/commands/draft-message.md +23 -0
- package/commands/eod-review.md +154 -0
- package/commands/execute-prp.md +37 -0
- package/commands/generate-prp.md +75 -0
- package/commands/multi-repo-feature.md +60 -0
- package/commands/roadmap.md +31 -0
- package/commands/sprint-status.md +486 -0
- package/commands/style.md +68 -0
- package/commands/visualize.md +17 -0
- package/docs/roadmap/multi-runtime.md +73 -0
- package/docs/superpowers/plans/2026-06-12-setup-hardening-roadmap.md +61 -0
- package/hooks/desktop-notify.sh +26 -0
- package/hooks/enforce-agent-model.jq +14 -0
- package/hooks/gsd-context-monitor.js +156 -0
- package/hooks/linear-lifecycle-sync.sh +112 -0
- package/hooks/memory-dedup.sh +122 -0
- package/hooks/memory-extractor.sh +218 -0
- package/hooks/post-commit-memory-trigger.sh +16 -0
- package/hooks/post-commit-verify.sh +41 -0
- package/hooks/post-edit-lint.sh +43 -0
- package/hooks/precompact-save-context.sh +124 -0
- package/hooks/priority-map-staleness.sh +29 -0
- package/hooks/proactive-resolver.sh +104 -0
- package/hooks/session-auto-title.sh +165 -0
- package/hooks/session-checkpoint.sh +97 -0
- package/hooks/session-cost-log.sh +77 -0
- package/hooks/session-log-action.sh +36 -0
- package/hooks/session-log-prompt.sh +25 -0
- package/hooks/session-restore.sh +45 -0
- package/hooks/session-save.sh +81 -0
- package/hooks/session-summarize.sh +154 -0
- package/hooks/validate-commit-format.sh +38 -0
- package/hooks/weekly-priority-map-review.sh +143 -0
- package/install.sh +46 -0
- package/package.json +67 -0
- package/scripts/ci/bootstrap-dry-run.sh +40 -0
- package/scripts/ci/check.sh +65 -0
- package/scripts/posthog-snapshot-loader.sh +112 -0
- package/skills/context-budget/SKILL.md +86 -0
- package/skills/memory-review/SKILL.md +100 -0
- package/skills/model-routing/SKILL.md +70 -0
- package/skills/posthog-weekly/SKILL.md +271 -0
- package/skills/ui-ux-pro-max/SKILL.md +377 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/templates/AGENTS.runtime.md +17 -0
- package/templates/CLAUDE.md +252 -0
- package/templates/claude-monitor.plist +35 -0
- package/templates/keybindings.json +13 -0
- package/templates/merge-settings.jq +53 -0
- package/templates/review-upgrades.md +44 -0
- package/templates/settings.json +255 -0
- package/templates/statusline-command.sh +182 -0
- package/tests/fixtures/hooks/events.json +32 -0
- package/tools/session-costs-view.sh +128 -0
- package/tools/session-dashboard-gen.sh +369 -0
- package/tools/session-live.sh +173 -0
- 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.
|