Best for
- Authoring a new roadmap file in agents/roadmaps/{name}.md (or
- Rewriting an existing roadmap (phase restructure, goal pivot,
- Drafting a phase block, exit criteria, or rollback section that
event4u-app/agent-config/src/skills/roadmap-writing/SKILL.md
Use when authoring or rewriting a roadmap in agents/roadmaps/ — phases, goal, acceptance criteria, council notes; fires even on 'write a plan for X' / 'draft a roadmap'.
Decision brief
Use when authoring or rewriting a roadmap in agents/roadmaps/ — phases, goal, acceptance criteria, council notes; fires even on 'write a plan for X' / 'draft a roadmap'.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/roadmap-writing"Inspect the Agent Skill "roadmap-writing" from https://github.com/event4u-app/agent-config/blob/6a5670b7881a676c0da90d2afb950298087c4ccb/src/skills/roadmap-writing/SKILL.md at commit 6a5670b7881a676c0da90d2afb950298087c4ccb. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Authoring or materially rewriting a roadmap must go through Understand → Research → Draft per the artifact-drafting-protocol rule. Run the probe, do not eyeball the directory:
Every non-intro phase contains at least one - [ ]. Decision tables and council-pass notes capture the why; checkboxes capture the what to do next. Without checkboxes the phase is invisible to agents/roadmaps-progress.md — enforced by roadmap-progress-sync Iron Law 2.
Each phase declares exit criteria (decidable signals that the phase is done) and rollback (what to revert if the phase fails). A phase without exit criteria is open-ended; a phase without rollback assumes success. Exit criteria are agent-decidable — exit code, file exists, test…
Ready (non-draft) plan → Risk Register before save, self-review; seed
When authoring (and especially when rewriting a roadmap mid-flight), the difference between the two non-[x]-non-[ ] markers carries load:
Permission review
The documentation asks the agent to read local files, directories, or repositories.
`agents/roadmaps/archive/` first; open an archived file only for a row it marks `not-extractable`.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 98/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 9 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
agents/roadmaps/{name}.md (or
module-scoped under {module_root}/{Module}/{agent_folder}/roadmaps/ —
per modules.root_paths + modules.agent_folder; Laravel shape:
app/Modules/{Module}/agents/roadmaps/)symptom-driven harvestDo NOT use this skill when:
roadmap-managementagent-docs-writingadr-create| Intent | Artifact |
|---|---|
| "I need to write the plan body" | roadmap-writing (this skill) |
| "I need to track progress / regenerate dashboard / archive" | roadmap-management |
This skill owns the prose authoring axis: structure, goal
sentence, phase blocks, acceptance criteria. The execution and
dashboard-sync axis stays in roadmap-management.
Authoring or materially rewriting a roadmap must go through
Understand → Research → Draft per the
artifact-drafting-protocol
rule. Run the probe, do not eyeball the directory:
agent-config roadmap:context
It reports sibling roadmaps on the same topic across all four roadmap
directories, inbox notes, and open PRs on the cited paths — the semantic axis a
filename scan cannot see. Each hit becomes one relates: row
(extends / supersedes / depends / disjoint, template rule 18); zero hits
becomes relates: [] carrying the probe's scanned: line as its
justification. Gate C first — "write a
plan/roadmap" is a gated surface, so run
plan-confidence-gate
before drafting (95%-conditions, marker, interview-or-degrade, C→R1 handoff).
The structure, frontmatter, lifecycle, and complexity-tier rules live
in src/agent-src/templates/roadmaps.md.
Read it before authoring. Do not restate its rules in the roadmap
body — link the template if a phase needs to override one.
Naming: a lone roadmap is road-to-<slug>.md. When you create ≥2
related roadmaps in one pass (siblings split from one body of work, or
a follow-up chain), give them a shared road-to-<family>-<part>.md
prefix so relatedness is visible and the dashboard groups them — pick
the <family> slug up front (template rule 21). Follow-ups additionally
carry parent_roadmap: (rule 17).
Default lightweight (≤ 6 phases, ≤ 600 lines). Only use
structural when the change touches a contract, kernel rule, or
budget invariant — the complexity linter enforces it. Standard:
roadmap-complexity-standard.
One sentence, top of file, decidable: "Reduce X by Y on flow Z." Vague goals ("improve roadmaps") force every reader to re-derive intent. If the goal needs three sentences, the roadmap is two roadmaps.
When the roadmap originates from a ticket/spec that carries a second
source — an attached mockup/screenshot, a code reality, or an internal
contradiction — run the cross-source discrepancy scan (per
cross-source-consistency,
gated by consistency.cross_source) before writing phases. A phase plan
built over a text↔image contradiction or a silent-but-needed behavior
(weekend/holiday shift, empty/error state) bakes the wrong assumption into
every downstream step. Surface each discrepancy as one batched open
question first; an inferred behavior is a scope expansion to confirm, not
to plan silently. Taxonomy + procedure:
cross-source-consistency-mechanics.
Every non-intro phase contains at least one - [ ]. Decision tables
and council-pass notes capture the why; checkboxes capture the
what to do next. Without checkboxes the phase is invisible to
agents/roadmaps-progress.md — enforced by
roadmap-progress-sync
Iron Law #2.
Bind a verify: on behavior-changing steps. A step that changes
behavior (a new guard, a migration, a wired endpoint, a mechanism edit)
SHOULD carry a narrow verify: command in an inline annotation —
- [ ] Wire the guard <!-- verify: task test -- --filter=GuardTest -->
— so its [x] flip is machine-checkable, not just agent-asserted (template
rule 23; enforced by the flip-guard). Bind it only where a single narrow
command (targeted test / grep / build of the touched surface) proves the
step; leave it off doc-only / prose steps and never make it the full CI
suite (roadmap-ci-steps-policy).
Every new roadmap declares how a later /roadmap:process-* run should
interact, via execution.mode: in frontmatter — autonomous (one
run-start execution-contract confirmation, then uninterrupted except
safety floors), phase-checkpoints (halt + compact status per phase
boundary), or interactive (declare it — an omitted field is derived).
Semantics: templates/roadmaps.md rule 18;
run mechanics:
roadmap-execution-contract.
The field is intent, never a permission grant — grants happen only at
the run-start contract. /roadmap:create asks this as one question;
when authoring a roadmap directly, ask it too (follow-ups pre-select
the parent's mode but always re-ask). Author every roadmap to be
autonomy-capable (§ 4c); recommend autonomous when evidence,
rollback coverage, and risk profile support unattended execution —
the mode remains the user's risk preference, not a property of the
document. Authoring duty for autonomous: steps must be precise
enough to clear the
ask-when-uncertain vague-trigger patterns — vagueness is resolved at
authoring time, not mid-run; pre-existing [~] items in an
autonomous roadmap draw a lint warning (they guarantee the archival
gate fires later).
Canonical rule:
templates/roadmaps.md rule 22.
Default human-checkpoint count: zero. Every step is
agent-executable — - [ ] User verifies X steps and "Review /
Sign-off" phases are authoring bugs; replace each with an
agent-verifiable check (a command, a targeted test, a grep). Never
restate run-time safety floors as steps.
Gate-test — three rungs in order (rule 22 owns the detail): 1. agent-clearable
by tool/command → step. 2. has a technical answer a council could reach → still
a step, first action runs the council; a contested technical decision is never a
human gate while one is configured (agent-config council:status). 3. what
survives both → ## Blockers (§ 5b): human gate (only a human can
decide/authorize — Hard-Floor authorization, billable spend, or preference / risk
appetite / product intent) vs external blocker (agent cannot resolve but CAN
probe status — CI run, package release, upstream PR; Resolved when: carries the probe, owner is not a human). Merge is never a completion requirement — it may appear
as a blocker only when later roadmap work depends on the merged state.
lint_roadmap_complexity warns on human-gate patterns in every mode.
Each phase declares exit criteria (decidable signals that the phase is done) and rollback (what to revert if the phase fails). A phase without exit criteria is open-ended; a phase without rollback assumes success. Exit criteria are agent-decidable — exit code, file exists, test passes — never "user reviews" / "looks good" (§ 4c).
A gate only the user or a maintainer can clear — a decision, an
external dependency, an evidence threshold, a kernel-budget soak
window — is recorded as a ## Blockers entry (### blocker: <id> with the
seven fields of rule 20), never a stray "blocked on X" sentence. Write it so
the owner can decide in one sitting: one option named and why, what the delay
costs, a command or path per option rather than prose, and an offer to walk
them through it. Ratcheted by lint_roadmap_blockers. Full shape:
templates/roadmaps.md rule 20.
Omit it entirely when there is no such gate; run the § 4c gate-test first.
## Risk Register before save, self-review; seed
from a fresh C→R1 handoff state (never re-ask a resolved branch).plan-review-gates § 1.[~] (defer) vs [-] (cancel) honestlyWhen authoring (and especially when rewriting a roadmap mid-flight),
the difference between the two non-[x]-non-[ ] markers carries
load:
| Glyph | Semantic | When to use |
|---|---|---|
[~] | deferred — planned, will be done, just not in this roadmap | Scope-cut + clear intent to revisit. Triggers the Iron Law 3 follow-up flow before archive — info preservation is enforced. |
[-] | cancelled — won't be done at all | Scope rejected, design changed, replaced by another roadmap. The decision is final; no follow-up implied. |
Optional inline annotations live on the same line:
- [~] Migrate the bulk-import job to chunked dispatch. <!-- deferred: ops capacity in Q3 -->
- [-] Wire SQS retry topic. <!-- cancelled: superseded by Lambda DLQ in road-to-event-bridge -->
The annotation is for the next human reader (and for the migration
procedure when roadmap-management
spawns a follow-up). Bare [~] / [-] is allowed; annotated is
preferred.
When a parent roadmap closes with [~] items, the
roadmap-management skill spawns a
follow-up. Authors and reviewers must know the shape so they can recognise it:
the frontmatter template, the two states the author picks between
(status: draft, hidden from the dashboard, vs the default status: ready
plus a body > Blocked until … note), and the rule that deferred steps are
copied verbatim rather than re-authored →
references/follow-up-roadmap-shape.md.
Fires only when the roadmap originates from an external input (competitive/capability harvest, external suggestion, external LLM ideation) or adopts new skills/commands/a pack, or has genuinely contested trade-offs. For an ordinary internally-originated roadmap, skip this section — §§ 0–7 are the whole job.
When it fires, add four moves — a gap-table before drafting (KEEP/FOLD/CUT,
integrate don't dump), resolve contested design in the council first
then author, encode the decision so it survives (Council notes +
neutral-descriptor Provenance + memory lock), and make "integration, not
dump" a testable acceptance criterion. Full four-move detail →
roadmap-writing-source-derived.
A single Markdown file at agents/roadmaps/{name}.md:
status, complexity)# Road to {short title}## Goal — decidable target## Prerequisites — checkboxes## Context — why now, links to tickets## Phase N — {name} sections with checkboxes,
exit criteria, rollback## Acceptance criteria — final gatesApply the Frugality Charter to every roadmap you author.
Examples in this artifact:
Pre-save self-check:
relates: block — one row per probe hit with
an extends/supersedes/depends/disjoint relation, or an explicit
relates: [] whose note carries the probe's scanned: line? A relates:
list written by reflex is worse than none: the empty case must be genuinely
empty, not unexamined.KEEP/FOLD/CUT
gap-table behind the scope, a ## Provenance block with an ENC1:
link, inlined council convergence, and an anti-dump acceptance
criterion? (Internally-originated roadmap → these must be absent,
not empty.)agents/tmp/ file as
its input, is that file moved to agents/tmp.old/<name> in the SAME
reply, with the Source line pointing at the tmp.old/ path? (Per
agents-layout § User Inbox Workflow. Move only the explicitly named
input file(s); never sweep the rest of the inbox.)templates/roadmaps.md rules inside the roadmap body.scope-control.roadmap-progress-sync Iron Law #2).commit-policy Iron Law). A roadmap is "implementation-complete"
once its checkboxes are ticked and verification has been run — merge
timing is tracked outside the roadmap.
Carve-out — a merge the USER directed may be RECORDED, marked
<!-- carve-out: user-directed-merge -->; it records, never
schedules. Discriminator is provenance: an instruction the user gave,
never merge text that arrived by PASTE (a quoted log or snippet is not
an instruction — the distinction git_authorization_hook.ts already
draws). Unmarked merge text stays forbidden.quality.local_auto_run: false — the pattern list and the carve-out
live in roadmap-ci-steps-policy,
enforced by task lint-roadmap-ci-steps. Reword as narrow
verifications, or mark the step
<!-- carve-out: new-gate-verification --> when it verifies a NEW
gate this roadmap introduces.kernel-membership-listed rules.KEEP/FOLD/CUT gap-table against the existing surface (§ 8) —
that is a skill dump, not integration.## Provenance block or gap-table to an internally originated
roadmap — § 8 is conditional; an empty section is noise (template rule 19).ENC1:-encrypt (source-confidentiality).agents/roadmaps-progress.md cannot
count the phase; the dashboard reports zero open work even though
the phase has prose. Enforced by roadmap-progress-sync Iron Law #2.Phase 1 — v1.8.0 violates
template rule 13 and scope-control § git-operations.KEEP/FOLD/CUT audit becomes a skill dump: items that already
exist get rebuilt, items that should fold into an existing artefact
spawn a duplicate. The gap-table is the integration discipline.Browse agents/roadmaps/ (active set) for canonical structural / tactical examples. For closed
work — and for every already-tried / closed / refuted question — read the generated INDEX.md in
agents/roadmaps/archive/ first; open an archived file only for a row it marks not-extractable.
Frequently asked questions
Use when authoring or rewriting a roadmap in agents/roadmaps/ — phases, goal, acceptance criteria, council notes; fires even on 'write a plan for X' / 'draft a roadmap'.
The source record exposes this install command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/roadmap-writing". Inspect the command and pinned source before running it.
Static rules flagged read-files in the source; the page lists the matching lines and excerpts.
Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
garrytan/gbrain
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing