Synthèse automatique
Gère le tableau de gestion de projet `.pm` d'un dépôt : inspection du statut, création et promotion de notes de boîte de réception, de jalons et de tâches, et clôture du travail, selon des conventions de nommage et de dimensionnement fixes.
Points forts
- Applique des règles explicites : hiérarchie workstream/inbox/milestone/task, règle de dimensionnement (>~1h pour un jalon) et cohérence entre l'ID et le chemin du fichier
- Maintient le statut synchronisé aux trois endroits où il vit (README du workstream, README du jalon, frontmatter de la tâche)
- Lit `.pm/DO_NOT_DO.md` avant de proposer du travail, ce qui évite de matérialiser des éléments contraires aux anti-objectifs
- Sert de définition canonique des conventions, réutilisée à l'exécution par `/pm-brainstorm` qui ne doit pas les reformuler
Limites
- Ne manipule que des fichiers markdown dans `.pm/` : aucune synchronisation avec un tracker externe (GitHub Issues, Jira, Linear)
- Suppose une arborescence et des conventions déjà en place ; sur un dépôt sans `.pm/`, le skill n'a presque rien à exploiter
- Le contenu fourni est tronqué au niveau des tâches de clôture standard, donc les détails complets de ces règles ne sont pas tous visibles
À utiliser lorsqu'on veut consulter l'état du tableau `.pm` ou effectuer une mutation prise en charge, comme créer un jalon, promouvoir une note en tâche ou marquer du travail terminé.
À ne pas utiliser pour réfléchir à de nouvelles idées de travail ou pour synchroniser le suivi avec un outil de gestion de projet externe.
Analyse de sécurité
SûrThe skill only uses Read/Write/Edit plus read-only Bash commands (ls, find, cat) and its stated purpose is to inspect and mutate a local .pm/ board directory. There are no network calls, no curl|sh, no secret handling, no destructive shell (no rm), and no attempts to disable safety controls. The one side effect worth noting is that it moves/rewrites files under .pm/, but that is the declared, legitimate function and is scoped to the board directory.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
/pm status — show me the current state of the .pm board: workstreams, open milestones, and loose inbox notes./pm create a milestone in w2 for adding rate limiting to the public API, with the tasks it needs and the goal linkage./pm mark task w1/m2/t003 as done and keep the milestone README and workstream checkbox in sync.name: pm description: >- Inspect and maintain the repository's .pm workstreams, inbox notes, milestones, and tasks. Use when the user asks for PM board status or requests a supported board mutation such as creating, promoting, adding, or completing work.
allowed-tools: Read, Write, Edit, Bash(ls:), Bash(find:), Bash(cat:*)
Task: Arrange the .pm board
/pm is the only skill that writes to .pm/. It arranges milestones and tasks under the conventions below. /pm-brainstorm proposes; /pm materializes. This file is the canonical definition of the board conventions — hierarchy, sizing rule, quality gate, standing closing tasks, templates. /pm-brainstorm reads it at runtime and must not restate or diverge from it. Parse the subcommand from $ARGUMENTS (default = status).
The .pm hierarchy
| Level | Path | Meaning | Effort |
| ---------- | ------------------------- | --------------------------------------------------------- | ------------------------- |
| Workstream | wN/ (w1, w2, …) | a general-purpose worker queue; README.md + inbox notes | — |
| Inbox note | wN/NNN.md (w1/005.md) | one idea or a sub-hour unit of work, plain markdown | ≤ ~1h |
| Milestone | wN/mN/ (m1, m2, …) | a shippable chunk: README.md + task files | > ~1h, multiple tasks |
| Task | wN/mN/tNNN.md | a single unit | tens of minutes |
Rules (enforce every time)
-
Respect the anti-goals. Read
.pm/DO_NOT_DO.mdbefore proposing or materializing work. Do not create milestones/tasks that conflict with it. -
Workers are general-purpose. Every
wNmay take work anywhere in the bex-security project. Workstream placement records scheduling and history, not a permanent mission, specialty, component boundary, or ownership claim. Do not assign themes or missions to workstreams, and do not use prior milestones to reject otherwise appropriate work. -
Sizing rule. A milestone must be > ~1 hour of work across more than one task. If a chunk is ≤ ~1h (tens of minutes, a task or two), do NOT create an
mN/directory — record it as a loose inbox notewN/NNN.md. Tasks take tens of minutes; milestones take hours. -
IDs must match the path. A task's
id: wN/mN/tNNNfrontmatter must equal the directory it lives in. Never create a milestone dir whose path disagrees with the IDs inside it — if you find such drift, flag/repair it, don't copy it. -
Keep status in sync across all three places it lives: the workstream
README.mdmilestone checkbox, the milestoneREADME.md**Status:**line + the— DONEmarker in the task table, and each task'sstatus:frontmatter. -
Numbering: next free zero-padded 3-digit for inbox notes (
NNN) and tasks (tNNN); next freewN/mN. Scan the tree first; don't reuse a number. -
Use
worker: worker1unless the workstream README names another worker. -
Milestones must be meaningful. Every milestone must include direct project-goal linkage, an observable expected outcome, and why this work matters now (dependency/risk/sequence rationale).
-
Every board item briefly explains why. Milestones carry it in the milestone
README.md(## Source + Goal linkage). Single tasks — inbox noteswN/NNN.md— carry it in the note itself: a one-lineWhy: …directly under the title (a sentence on the motivation/payoff is enough). -
Every milestone ends with standing closing tasks, appended after the implementation tasks whenever a milestone is materialized:
- Surface parity — only when the milestone is feature development or a fix that touches the public CLI/SDK surface. Check that the change is consistent across every surface it exposes: CLI commands/flags/env vars and the TypeScript SDK in
sdk/typescript/(commands, arguments, flags, accepted values, and defaults are public API — seeAGENTS.md"Public CLI changes"), the container (Dockerfile,docker/), and the docs (README.md,SECURITY.md,RELEASING.md). Update relevant help, schemas, documentation, and tests in the same change; flag any drift as follow-up work rather than silently diverging. Omit this task only for milestones with no public-surface change (pure infra, internal mechanism, docs, etc.) — note why it was omitted in the milestone's## Source + Goal linkage. - Simplify — run
/simplifyover the code this milestone changed (reuse / simplification / efficiency; behavior-preserving). - Test coverage — add meaningful tests for the behavior this milestone shipped. Tests must assert real behavior and failure modes; never game coverage with trivial, tautological, or snapshot-everything tests (see
sdk/typescript/TESTING.md). - Closeout — the final task, added last. When the milestone's other tasks are all complete and its definition of done is actually met, close the milestone: set every remaining task's
status: done, move eachtNNN.mdtowN/mN/done/, mark every row— **DONE**and set**Status:** donein the milestoneREADME.md, move the wholewN/mN/directory towN/done/mN/, and check- [x]in the workstreamREADME.md. Completing this task is the move — running/pm done <wN/mN/tNNN>on it last triggers the milestone move (thedonesubcommand's step 4). Do not run it until the DoD holds: a milestone lands indone/when its observable end state is real, not merely when the code is written.
Each
depends_onthe last implementation task(s) (Simplify and Test coverage depend on Surface parity when it's present; Closeout depends on Test coverage) and all count toward the(N tasks)total.add-taskinserts new work before these (before Closeout) and updates theirdepends_on. - Surface parity — only when the milestone is feature development or a fix that touches the public CLI/SDK surface. Check that the change is consistent across every surface it exposes: CLI commands/flags/env vars and the TypeScript SDK in
-
After editing any
.mdunder.pm/, runnpx prettier@3.4.2 --write ".pm/**/*.md"to keep the board consistently formatted.
Subcommands
status (default)
Read the tree (find .pm -type f -name '*.md', skipping done/) and .pm/DO_NOT_DO.md. Print, per open workstream: its milestones with **Status:**, and the next actionable task per milestone — the first non-done task whose depends_on are all satisfied. Also list open inbox notes. Then run a lightweight validation pass and flag:
- items conflicting with
.pm/DO_NOT_DO.md, - milestones missing
## Source + Goal linkage, - milestones whose definition of done is vague/non-testable,
- inbox notes missing a
Why:line.
Touch no files.
new workstream
Create the next free wN/ with a role-neutral README.md from the workstream template below.
add <wN> <idea…>
Create the next free inbox note wN/NNN.md with the idea as plain terse markdown (no frontmatter), with a one-line Why: … directly under the title. This is the default home for sub-hour work.
promote <wN/NNN> / new milestone <wN> <title>
Apply the sizing rule first.
- If the work is > ~1h and splits into more than one task: create
wN/mN/withREADME.md(milestone template) + onetNNN.mdper task (task template) + the standing closing tasks (Surface parity when it's feature dev/a fix touching the public CLI/SDK surface, then Simplify, then Test coverage, then Closeout), add the- [ ] **mN** — …line to the workstreamREADME.md, and fill## Source + Goal linkagewith source + goal linkage + expected outcome + why-now rationale (note there why Surface parity was included or omitted). - If it is ≤ ~1h: do NOT create a milestone. Keep/append it as an inbox note
wN/NNN.md(with its one-lineWhy: …) and tell the user why (too small for a milestone).
add-task <wN/mN> <title>
Create the next tNNN.md from the task template and add its row to the milestone README.md table before the standing closing tasks, updating their depends_on to include it. Update the (N tasks) count in the workstream README.
done <wN/mN/tNNN>
- Set the task's frontmatter
status: done. - In the milestone
README.md: mark the row— **DONE**and update the**Status:**line (e.g.todo (t001 done)). - Move the file to
wN/mN/done/tNNN.md. - If no open tasks remain in the milestone, move the whole milestone to
wN/done/mN/and check its box (- [x]) in the workstreamREADME.md.
Show the intended moves before mutating if the user passed DRY_RUN=1.
Templates
Workstream README.md
# wN — project workstream (<worker>)
**Worker:** <worker>. This is a general-purpose bex-security workstream. It may take work anywhere in the project; the milestones below are scheduled work and historical records, not a permanent purpose, specialty, or ownership boundary.
## Milestones
- [ ] **mN** — <title> (<N> tasks) ← from <source>
Milestone README.md
# wN · mN — <name>
**Worker:** <worker> **Goal:** <what shipping this achieves> **Status:** todo
## Tasks (in order)
| id | title | est | depends_on |
| ---- | ------- | --- | ---------- |
| t001 | <title> | 30m | — |
## Definition of done
<observable, testable end state>
## Source + Goal linkage
- **Source:** <pointer to the inbox note / brainstorm / docs this came from>
- **Goal linkage:** <which project goal / pillar this advances>
- **Expected outcome:** <observable impact after shipping>
- **Why now:** <dependency / risk / sequence rationale>
Task tNNN.md
---
id: wN/mN/tNNN
title: <title>
worker: <worker>
status: todo
estimate: 30m
depends_on: [wN/mN/tMMM]
---
## Objective
<one paragraph>
## Context
- <concrete paths / commands / facts>
## Steps
1. <step>
## Files
- <paths to touch>
## Acceptance criteria
- [ ] <testable check>
## Out of scope
- <deferred adjacent work>
Inbox note wN/NNN.md
Plain terse markdown, no frontmatter — one idea or a sub-hour unit of work. Opens with, directly under the title:
Why: <one sentence — motivation / payoff>
Arguments
$ARGUMENTS
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/repository-pm-board-management-mvda86nh/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/repository-pm-board-management-mvda86nh' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/repository-pm-board-management-mvda86nh/download' --output '.skill-downloads/repository-pm-board-management-mvda86nh/SKILL.md.part' && mv '.skill-downloads/repository-pm-board-management-mvda86nh/SKILL.md.part' '.skill-downloads/repository-pm-board-management-mvda86nh/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Write, Edit, Bash(ls:*), Bash(find:*), Bash(cat:*)
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/repository-pm-board-management-mvda86nh/SKILL.md' && test -s '.skill-downloads/repository-pm-board-management-mvda86nh/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/pm' && cp -R '.skill-downloads/repository-pm-board-management-mvda86nh' '.claude/skills/pm'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/repository-pm-board-management-mvda86nh'openskills read 'repository-pm-board-management-mvda86nh'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/repository-pm-board-management-mvda86nh/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Lecteur PDF
Productivite
Lit et extrait le texte de fichiers PDF (rapports, contrats, tableurs). Gère les fichiers locaux, les URL et les pièces jointes WhatsApp. Utilisez-le dès qu'un contenu PDF est nécessaire, même sans demande explicite.
Workflows de messagerie Discord
Productivite
Utilisez l'outil message pour envoyer, modifier et modérer des messages Discord avec des composants interactifs.
Aperçu interactif des verdicts
Productivite
Générer un aperçu HTML interactif des verdicts (garder/supprimer) pour la revue par le mainteneur, puis traiter le JSON de retour.