PM único del proyecto (single-brand) — owner del SSoT funcional. Pointer-first: carga docs/PROJECT-MAP.md + docs/product/checkpoint.md + docs/product/BACKLOG.md (si existe) en bootstrap. Owner: docs/product/{outcomes,stories,capabilities,modules}/, docs/learnings/, docs/architecture/, docs/domains/. Hereda paradigm v4 (10 estados macro) del método Luana. Auto-chain a /po-ux, /po, /ux-agentico, /architect, /dev-team, /auditor via Skill tool inline. Activa: '/pm', 'estado proyecto', 'backlog', 'story', 'outcome', 'capability', 'learning', 'refinemos X', 'qué hacemos hoy'.
64
79%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./claude/skills/pm/SKILL.mdOwner del SSoT funcional del proyecto. Hereda paradigm v4 (10 estados macro) + 3-conversation flow del método Luana. Para proyectos single-brand: NO existe multibrand portfolio ni promotion-gate. Un único
/pmcubre todo.
Bootstrap carga ~3-5k tokens (PROJECT-MAP + checkpoint global + BACKLOG si existe). NO carga stories full. Drill-down explícito.
| Surface en bootstrap | Token cost |
|---|---|
docs/PROJECT-MAP.md (snapshot proyecto auto-gen) | ~1.5k |
docs/product/checkpoint.md (state global) | ~500 |
docs/product/BACKLOG.md (vista 10 estados) | ~1-3k |
| On-demand: story-folder específica | ~500-1k c/u |
| Path | Contenido | Owner |
|---|---|---|
docs/PROJECT-MAP.md | vista master auto-gen (módulos + capabilities + active stories) | scripts/generate_project_map.py (/pm triggers) |
docs/product/checkpoint.md | state global del proyecto | /pm |
docs/product/BACKLOG.md | vista 10 estados auto-gen | scripts/generate_backlog.py |
docs/product/outcomes/{slug}.md | épicas (agrupación stories por objetivo) | /pm |
docs/product/stories/{id}/checkpoint.md | per-story state | /pm + handoffs (po-ux/po/architect/dev-team/auditor) |
docs/product/stories/{id}/00-research.md | research opcional state=idea | /pm |
docs/product/stories/{id}/07-merge.md | merge artifact state=done | /pm |
docs/product/capabilities/{module}/{cap}.yaml | capacidades shipped (ratifica al merge) | /pm |
docs/product/modules/{module}.md | narrativa por módulo | /pm |
docs/learnings/{date}-{slug}.md | insights | /pm |
docs/architecture/ADR/ADR-{NNN}-{slug}.md | ADRs del proyecto | /pm |
docs/domains/{ep}/{component}.md | tools/workflows registrados (si agentic) | /pm |
docs/specs/templates/, docs/rules-detail/, docs/process/ (raíz) — son SSoT del método Luana, no del proyecto.claude/skills/, .claude/rules/, .claude/agents/ — SSoT del métodobackend/src/, frontend/src/ — eso es /dev-team o builders/po-ux, /po, /ux-agentico, /architectSSoT:
.claude/rules/project-docs-schema.md.
Toda escritura a docs/ debe cumplir:
docs/ raíz. Solo sub-dirs (product/, archive/, learnings/, architecture/, domains/, specs/, process/, rules-detail/). Contenido ad-hoc → al sub-dir apropiado.state: done auto-move a docs/archive/{year}/stories/ en el commit del 07-merge.BACKLOG.md, BACKLOG.yaml, PROJECT-MAP.md, modules/{m}.md (sección auto-list). Editar la SOURCE (checkpoint/outcomes/stories/capabilities), luego regen.Si /pm detecta violación durante una sesión → STOP + redirect a la ubicación canónica.
ANTES del menú habitual, scanear stories abiertas en el worktree actual.
WS=$(git rev-parse --show-toplevel)
# Stories en state developing|developed|reviewing
for cp in ${WS}/docs/product/stories/*/checkpoint.md; do
[ -f "$cp" ] || continue
STORY_ID=$(basename $(dirname $cp))
STATE=$(grep -E "^state:" $cp | head -1 | awk '{print $2}')
DEFER=$(grep -E "^defer_audit:" $cp 2>/dev/null | awk '{print $2}')
if [[ "$STATE" =~ ^(developing|developed|reviewing)$ ]]; then
if [[ "$DEFER" == "true" ]]; then
REASON=$(grep -E "^defer_audit_reason:" $cp | sed 's/^defer_audit_reason: //')
echo "⏸ DEFERRED: $STORY_ID (state=$STATE, reason=$REASON)"
else
echo "🔴 OPEN: $STORY_ID (state=$STATE) — REQUIRES RESUME FIRST"
fi
fi
doneSi hay stories OPEN sin defer_audit:
developing → "continúa /dev-team {story-id}"developed → "auto-handoff /auditor {story-id}"reviewing → "espera auditor o /pm merge {story-id} cuando CHECKPOINTS APPROVED"Si todas las stories abiertas tienen defer_audit: true:
[ -f docs/PROJECT-MAP.md ] && head -60 docs/PROJECT-MAP.md # snapshot
cat docs/product/checkpoint.md 2>/dev/null # state global
cat docs/product/BACKLOG.md 2>/dev/null | head -80 # vista 10 estadosSi PROJECT-MAP.md no existe → sugerir invocar /project-audit (proyecto existente sin método) o /project-bootstrap (greenfield) primero.
Pregunta a Chris: "¿qué hacemos? (a) idea/story nueva / (b) continuá story X / (c) outcome nuevo / (d) capability / (e) learning / (f) drill-down a {target}"
| # | Estado | Trigger | Owner | WIP cap |
|---|---|---|---|---|
| 1 | idea | Chris tira | Chris + /pm | ∞ |
| 2 | refining | "refinemos {x}" | /pm + (/po-ux | /po | /ux-agentico) | ≤ 3 |
| 3 | refined | Chris ratifica spec + diseño | /pm cierra | ≤ 5 |
| 4 | ready | /architect produce package | /architect | ≤ 5 |
| 5 | developing | /dev-team toma ticket | /dev-team | ≤ 3 |
| 6 | developed | validators GREEN | /dev-team + AUTO-HANDOFF /auditor | ≤ 1 |
| 7 | reviewing | /auditor pickup | /auditor + AUTO-HANDOFF /pm merge | ≤ 1 |
| 8 | done | auditor APPROVED + merge | /pm | rolling 90d |
| 9 | parked | manual | Chris | ∞ |
| 10 | dropped | manual (terminal) | Chris | ∞ |
SSoT:
.claude/rules/pm-skill-chaining.md.
Cuando /pm determina que la acción siguiente es invocar otra skill (/po-ux, /po, /ux-agentico, /architect, /dev-team, /auditor), el modelo MUST invocar Skill tool inline al final del turno actual — NO devolver mensaje textual pidiendo al usuario que tipee la slash-command manualmente.
Triggers para encadenar:
/po-ux (o /po, /architect, etc.) en argsExcepciones (NO encadenar):
defer_audit: true detectada en Step 0/auditor cuando story está state=refining)Cómo encadenar:
Skill tool inline: { skill: "<name>", args: "<story-id>" }| Chris dice | Acción |
|---|---|
| "estado proyecto" / "qué tenemos" | Render PROJECT-MAP + checkpoint + BACKLOG resumen |
| "refinemos {story-ui}" | Auto-chain /po-ux {story-id} |
| "refinemos {story-service}" / "spec service" | Auto-chain /po {story-id} |
| "diseñemos flujo conversacional" | Auto-chain /ux-agentico {story-id} |
| "spec ratificada" / "arq técnica" | Auto-chain /architect {story-id} |
| "build" / "arranca dev" | Auto-chain /dev-team {story-id} |
| "audita" / "QA" | Auto-chain /auditor {story-id} |
| "merge {story-id}" | Ejecuta merge (07-merge.md + capabilities update + archive story) |
| "nueva idea {x}" | Crea docs/product/stories/{slug}/checkpoint.md state=idea |
| "outcome {slug}" | Crea docs/product/outcomes/{slug}.md |
| "learning {slug}" | Crea docs/learnings/{date}-{slug}.md |
| "ADR {slug}" | Crea docs/architecture/ADR/ADR-{NNN}-{slug}.md |
| "regen project map" | python scripts/generate_project_map.py |
| "regen backlog" | python scripts/generate_backlog.py |
reviewing → done)Cuando /auditor retorna APPROVED + CHECKPOINTS.md verdict=APPROVED:
06-audit/gherkin-matrix.md all PASS (Phase D auditor)07-merge.md con las 5 secciones cementadas (schema en docs/specs/templates/07-merge-template.md)docs/product/capabilities/{module}/{cap}.yaml con verification.commands + verification.gherkin_evidence + verification.playwright_specsgit mv docs/product/stories/{id} docs/archive/{YYYY}/stories/{id} en mismo commitwip/{slug} → mainstate: reviewing → done.claude/skills/, .claude/rules/, .claude/agents/ (eso es el método Luana, no del proyecto)docs/specs/templates/, docs/rules-detail/, docs/process/ (idem)/po-ux, /ux-agentico, /architect)backend/src/, frontend/src/ (eso es /dev-team o builders)docs/PROJECT-MAP.md — vista master proyectodocs/process/paradigm-v4.md — 10 estados macro + 3 conversacionesdocs/process/parallel-sessions-protocol.md — worktrees + sync KISSdocs/specs/templates/ — schemas story-folder.claude/rules/story-closure-gate.md — gate enforcement.claude/rules/pm-skill-chaining.md — auto-chain pattern.claude/rules/project-docs-schema.md — R1+R2+R3 docs schema.claude/skills/{po-ux,po,ux-agentico,architect,dev-team,auditor}/SKILL.md — destinos de auto-chain.claude/skills/project-audit/SKILL.md — bootstrap proyecto existente sin método.claude/skills/project-bootstrap/SKILL.md — bootstrap proyecto greenfieldcaa08df
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.