Agent skill

Feature Lifecycle

by Inebrio in Inebrio/Routerly

Run a Tier 1 or Tier 2 feature end to end — feature level, story level, parallelism, integration, and retrospective.

AGPL-3.0Auto-check passedAgent Workflows

Install Feature Lifecycle

skills CLI
$ npx skills add Inebrio/Routerly --skill feature-lifecycle -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Inebrio/Routerly feature-lifecycle --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Inebrio/Routerly.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/feature-lifecycle .claude/skills/feature-lifecycle && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
feature-lifecycle
GitHub stars
100
Token cost
~3k tokens
SKILL.md length
1,882 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Run a Tier 1 or Tier 2 feature end to end — feature level, story level, parallelism, integration, and retrospective.

  • Works in 4 steps: analyst → analysis, task list,… → story-writer → one story file per story.… → project-manager → one blueprint per… → …
  • You are running a multi-agent feature per AGENTS.mds Workflow tiers
  • SKILL.md covers Feature level — main session,…, Story level — one teammate per…, Parallelism and Integration and closing, plus 2 more sections
  • Calls node, git and sh

What it does

Feature Lifecycle is an agent skill from Inebrio/Routerly. Run a Tier 1 or Tier 2 feature end to end — feature level, story level, parallelism, integration, and retrospective. Use when you are running a multi-agent feature per AGENTS.md's Workflow tiers, not for Tier 0 inline work.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering Retrospectives and Agent instruction files. The repository describes itself as: Self-hosted LLM gateway that routes requests across AI providers (OpenAI, Anthropic, Gemini, Mistral, Ollama) using intelligent multi-policy scoring — including an LLM-native… The licence is AGPL-3.0.

When your agent uses it

  • You are running a multi-agent feature per AGENTS.mds Workflow tiers
  • Not for Tier 0 inline work

Example prompts

  • “/feature-lifecycle”

Requirements

  • Docker

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. analyst → analysis, task list, dependency graph. If its report starts with NEEDS-INPUT, put its questions to the user with…
  2. story-writer → one story file per story. No file, function or endpoint names in a story.
  3. project-manager → one blueprint per story, with every contact point frozen and the exact start command the validator will run. At most six…
  4. Show and launch in the same response. Story list plus dependency graph, then start. No "shall I proceed".

What it can do on your machine

Read from SKILL.md and the folder at commit bcf58f1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • git
    • sh
    • docker

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and docker, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Feature Lifecycle loads about 3k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 1,882 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Inebrio/Routerly at commit bcf58f1, republished under its AGPL-3.0 licence (© Inebrio). 1,882 words, ~2,986 tokens.

Download SKILL.mdSave it as .claude/skills/feature-lifecycle/SKILL.md (or your agent's skills folder).
name
feature-lifecycle
description
Run a Tier 1 or Tier 2 feature end to end — feature level, story level, parallelism, integration, and retrospective. Use when you are running a multi-agent feature per AGENTS.md's Workflow tiers, not for Tier 0 inline work.

Feature lifecycle

The mechanics for running a Tier 1 or Tier 2 feature, once the tier is picked per AGENTS.md's Workflow section. See story-lifecycle for what a single story does inside its own worktree; this skill covers the layer above it — feature level, parallelism across stories, integration, and the retrospective.

Feature level — main session, main checkout

  1. analyst → analysis, task list, dependency graph. If its report starts with NEEDS-INPUT, put its questions to the user with AskUserQuestion: state the problem, the options with their consequences, and the recommendation. Send the answers back to the same agent and let it finish.
  2. story-writer → one story file per story. No file, function or endpoint names in a story.
  3. project-manager → one blueprint per story, with every contact point frozen and the exact start command the validator will run. At most six engineer tasks per story. Every task is a fresh agent that reads the repository, the blueprint and the conventions from nothing, so a seventh task costs more in re-read context than the split saves in focus. Measured: one story split into twelve tasks spent 57M input tokens on its engineers alone, 15% of an eighteen-story feature. If a story genuinely needs more than six, it is more than one story and belongs back with the story-writer.
  4. Show and launch in the same response. Story list plus dependency graph, then start. No "shall I proceed".

Story level — one teammate per story, one worktree per story

Each story runs the story-lifecycle skill in its own worktree, branch story/<feature>/<story-id>, its own ports, its own ROUTERLY_HOME:

node .Codex/scripts/story.mjs claim <story-id> --feature <feature> --base 0.4.0
  1. orchestrator freezes the interface, then dispatches backend-engineer and frontend-engineer in parallel where the blueprint says they are independent.
  2. validator starts the app on the story's ports and verifies every criterion for real, browser included. It can run anything and change nothing but its own report.
  3. BLOCKED → remediation-loop, three iterations maximum, then escalate to the user with what survived and why.
  4. A story that passes validation with zero blocking findings merges into its base branch right away: story.mjs state <id> done and story.mjs release <id>. qa-engineer and docs-writer do not run per story — every story merges as fast as validation clears it, and formalization happens once, at the feature-level user-check gate below, after every story is in.

An agent returns a summary and a path, never the report itself. Its deliverable is already on disk by rule; returning the full text a second time puts it into the main session's context, where it is then re-read on every later turn. The main session is 27% of this feature's input tokens, more than any agent role except the engineers, and that is what most of it is. Ten lines and the path to the file is the whole contract: verdict, blocking count, and where to read the rest.

This is a hard cap, not a target: no pasted file contents, no blueprint excerpts, no diffs, no findings lists in the return message, whatever the reason feels compelling in the moment. If the summary would need more than ten lines to be useful, the extra belongs in the file, not the message: the main session reads the file when it needs the detail, once, not on every later turn by way of the conversation. A follow-up feature measured this rule "in force" and still watched the main session's share grow 27% → 32%; a rule that erodes under its own weight needs a harder edge, not a reminder.

An agent's report is not evidence. When an agent returns, the main session checks the worktree before believing it: git status --short plus the files the blueprint said would exist. Agents have returned confident summaries for files they never wrote, and have returned nothing at all after ninety minutes of work. Both are caught by looking, and only by looking. An agent that returns without a result is resumed with an order to write the deliverable to disk before composing any prose.

Parallelism

Stories are the unit, not features. Independent stories run at once; the dependency graph decides what is allowed to run in parallel, and the machine decides how many of those actually do.

Concurrency is measured, not chosen. Between one and six, never a fixed number. Before every dispatch:

sh .Codex/scripts/capacity.sh

It samples for five seconds and prints the slot count, the reason it is that number, how many stories are already in flight, and how many more to dispatch. The exit code is the slot count, so it can gate a loop. Dispatch what it says and not one more. If it says zero more, the answer is to let the running stories finish, never to push the seventh and hope.

The signals it reads, and why each is there:

  • Kernel memory pressure (kern.memorystatus_vm_pressure_level) is the one to trust over the others, because it is what the OS itself acts on. WARN caps at three, CRITICAL at one.
  • Swap growth, not swap used. Used never falls on macOS: pages stay in swap until something touches them, so a machine that recovered an hour ago still reads eleven gigabytes used and means nothing by it. Growth is the part that means something.
  • Free memory percentage. Below twenty per cent this laptop starts paging out things the user is actively using, which is the state where it stops being usable for anything else.
  • Load per core, not raw load. Eight cores make a load of eight ordinary and a load of twenty-four a wall.

Two things the script cannot see, so they are yours to apply on top of it:

  • A container build under QEMU emulation counts for more than one slot. A docker buildx --platform linux/amd64,linux/arm64 on this machine froze it hard: buildkit OOM-killed in an eight-gigabyte VM, load average fifty-nine, swap at thirteen gigabytes of fourteen. If a story needs one, it runs alone or it moves to CI.
  • The measurement is a snapshot. Re-run it between dispatches, not once at the start of a wave.

A slot is held by a story's implementation, not by its paperwork. Once a story passes validation it merges and its slot frees immediately — nothing holds a slot open waiting on a human or on tests and documentation, because neither runs per story any more. Stories touching the same file or the same contract run sequentially, in graph order. The registry (.Codex/registry.json, main checkout, lock-protected) is what stops two sessions taking the same story or the same ports.

Show full SKILL.md (807 more words)Show less

Integration and closing

Merging is the main session's job, never a teammate's. When a story passes: merge its branch into the integration branch in dependency order, then story.mjs state <id> done and story.mjs release <id>. release refuses a worktree holding unmerged work; merge first, never force past it.

Finished work goes back to its base branch immediately. This is not a gate. A story that has passed validation with zero blocking findings is merged as soon as it passes, without asking. Asking costs a round trip and leaves the branch drifting from a base that other stories are still moving; the user's instruction is that anything finished is always carried back to the branch it started from. The two things that still stop a merge are a blocking finding and a genuine conflict, and both are work, not permission.

Two mechanical notes, both learned by hitting them:

  • commitlint runs on merge commits. merge(RA-07): ... is rejected: the type must be one of the conventional set. Use the type of the change being merged (fix, feat, docs) and name the branch in the body.
  • story.mjs state has merging and blocked for a reason. capacity.sh counts only in-progress against the machine's slots. A story that has passed and is waiting to merge is merging; a story parked on CI or an external gate is blocked. Leaving either at in-progress makes the capacity script refuse dispatches the machine could have carried, which is how this feature spent a stretch reporting "dispatch 0 more" with nothing actually running.

Feature-level user-check gate

Once every story that can merge locally has merged (git branch --merged <base> against what the analysis scoped), stop dispatching and report to the user: what merged, what's blocked and why, and how to run and test the integration branch themselves. This is the feature's one formalization gate — nothing past it runs without the user's go-ahead, and it replaces asking per story, which was slower and produced the same information in smaller, more expensive pieces.

On go-ahead: dispatch qa-engineer and docs-writer against the integration branch, covering everything the feature shipped, in parallel with each other. They commit directly to the integration branch; no story worktree is reopened for this. Then the retrospective, below.

A feature closes when every story is done, the integration branch builds and its tests pass, and the user approves. Specs stay on disk after closing: they are gitignored and they are the record of why the code looks the way it does.

Human gates: two. The analyst's questions, and the single feature-level user-check gate above, before qa-engineer and docs-writer. Everything else runs without asking.

Retrospective

Every merged story gets a retrospective entry, written by the main session, appended to .Codex/specs/<feature>/04-retrospective.md at merge time. This is a phase of the process, not a courtesy. A feature does not close without it.

The entry answers four questions and nothing else:

  1. Where did the wall-clock and the tokens actually go? From node .Codex/scripts/agent-cost.mjs, never from memory. It reports minutes, tokens in and tokens out for every point in the process, per story and per role, plus resumes and stalls. The first time it was run it contradicted the entry written from impressions the day before: stalls were 10% of the cost, not the headline, and one story out of eighteen was 37%.

    Run it before the agents' own transcripts are reaped. Nested agents, which is to say the engineers, exist nowhere else.

  2. What was rework? An agent that stalled and needed resuming, a blueprint corrected mid-flight, a validator round that a better prompt would have made unnecessary, two agents solving the same problem twice in different places. Name it and say what it cost.

  3. What changes because of it? A concrete edit: to this file, to an agent definition, to a skill, to a blueprint template. If nothing changes, write "nothing changes" and the reason. A retrospective whose every entry is "went well" is not being written honestly.

  4. What is now known that the next story should not rediscover? Goes to .ai/memory.md if it is about the code, stays here if it is about the process.

The rule that makes it worth anything: a lesson that does not become an edit is not a lesson. If three stories in a row report the same waste, the process is what is broken, and fixing it takes priority over the next story.

Report the retrospective to the user in chat when it is written. The user is the one deciding whether the process is worth what it costs, and cannot decide that from a file they were never shown.

Interrupt policy: stop and explain only when a story is unachievable for architectural or irreversible reasons. Give the exact problem, why it blocks, and the options with tradeoffs. Never interrupt for ordinary implementation difficulty: the remediation loop handles that.

© Inebrio, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/feature-lifecycle of Inebrio/Routerly.

Open the folder on GitHubat commit bcf58f1

Compare with similar skills

Feature Lifecycle next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Feature Lifecycle compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Feature Lifecycle this skillInebrio/Routerly100—~3kAutomated safety check: PassAGPL-3.0
Living Docs Governanceqshanx/docs-governance132—~4.1kAutomated safety check: PassMIT
Retrospective Codifymizchi/skills356—~3.2kAutomated safety check: PassNone
Refit Environment RetrospectiveYeachan-Heo/oh-my-claudecode40k—~1.4kAutomated safety check: PassMIT
Codex Retrospectivemajiayu000/spellbook286—~1.6kAutomated safety check: PassMIT
Agent Development SpecificationSmartSunruiyang/Agent-development-specification150—~2.5kAutomated safety check: PassMIT

Similar skills

  • Living Docs Governance

    qshanx/docs-governance

    把长期项目的文档当成一个小系统来维护,防止文档腐烂——四份各司其职的脊柱文件(CLAUDE.md 共享章程 / CLAUDEMAP.md 地图 / PROJECTSTATUS.md 健康仪表盘 / PROJECTLOG.md 流水账)+ Codex 的 AGENTS.md 入口桥接 + 固定读序,并按需连接 ARCHITECTURE、CONTEXT、ADR、契约、测试、回归和 Issue…

    132 GitHub stars~4.1k tokensUpdated 3 days ago
    Agent WorkflowsAuto-check passed
  • Pair "what failed first" with "what finally worked" and codify the should-have-known-it insight as an ast-grep rule, a skill, or a CLAUDE.md rule.

    356 GitHub stars~3.2k tokensUpdated 6 days ago
    Product & Project ManagementAuto-check passed
  • Refit Environment Retrospective

    Yeachan-Heo/oh-my-claudecode

    Reads an agent environment's own traces, friction reports and logs across sessions, then proposes fixes on the surface that owns each one, only with your approval.

    40k GitHub stars~1.4k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Codex Retrospective

    majiayu000/spellbook

    A skill your agent uses when you want Codex to review its own recent history (last N days or specific period) and improve its behavior.

    286 GitHub stars~1.6k tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Agent Development Specification

    SmartSunruiyang/Agent-development-specification

    Bootstraps the Day-0 agent-governance + documentation scaffold for ANY project on ANY stack.

    150 GitHub stars~2.5k tokensUpdated 4 mo ago
    Agent WorkflowsAuto-check passed
  • Process

    notque/vexjoy-agent

    Process: retrospectives, session handoff, pair programming, subagent-driven development, condition-based waiting.

    438 GitHub stars~2.1k tokensUpdated 5 days ago
    Agent WorkflowsAuto-check: notes

More from Inebrio/Routerly

All 17 skills in this repo
  • Docs Conventions

    Inebrio/Routerly

    Where documentation lives in this repository, how a page is structured, and what a change owes the docs.

    100 GitHub stars~624 tokensUpdated 2 days ago
    Auto-check passed
  • Story Lifecycle

    Inebrio/Routerly

    Run one user story end to end in its own worktree, from claim to merge.

    100 GitHub stars~905 tokensUpdated 2 days ago
    Auto-check passed
  • Test Conventions

    Inebrio/Routerly

    Where tests live in this repository, how to run them, and what a story owes in coverage.

    100 GitHub stars~467 tokensUpdated 2 days ago
    Auto-check passed
  • Validation Protocol

    Inebrio/Routerly

    How to validate a story against its criteria and write the report, including what counts as evidence and what counts as blocking.

    100 GitHub stars~628 tokensUpdated 2 days ago
    Auto-check passed
  • Analysis Format

    Inebrio/Routerly

    Shape of a feature analysis document (00-analysis.md). An agent skill from Inebrio/Routerly.

    100 GitHub stars~472 tokensUpdated 2 days ago
    Auto-check passed
  • Blueprint Format

    Inebrio/Routerly

    Shape of a story blueprint, the technical plan an orchestrator executes.

    100 GitHub stars~581 tokensUpdated 2 days ago
    Auto-check passed

Questions about Feature Lifecycle

What does Feature Lifecycle do?

Run a Tier 1 or Tier 2 feature end to end — feature level, story level, parallelism, integration, and retrospective. Feature Lifecycle is an agent skill from Inebrio/Routerly. Run a Tier 1 or Tier 2 feature end to end — feature level, story level, parallelism, integration, and retrospective.

When should I use Feature Lifecycle?

Feature Lifecycle fits situations like: you are running a multi-agent feature per AGENTS.mds Workflow tiers; not for Tier 0 inline work.

How do I install Feature Lifecycle in Claude Code?

Run `npx skills add Inebrio/Routerly --skill feature-lifecycle -a claude-code`. Or copy the skill folder (.agents/skills/feature-lifecycle in Inebrio/Routerly) into .claude/skills/feature-lifecycle in your project. Claude Code loads it when a task matches its description.

How do I install Feature Lifecycle in Codex?

Run `npx skills add Inebrio/Routerly --skill feature-lifecycle -a codex`. Or copy the skill folder (.agents/skills/feature-lifecycle in Inebrio/Routerly) into .agents/skills/feature-lifecycle in your project. Codex loads it when a task matches its description.

Can I use Feature Lifecycle in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Inebrio/Routerly --skill feature-lifecycle -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/feature-lifecycle, .gemini/skills/feature-lifecycle, .github/skills/feature-lifecycle and .opencode/skills/feature-lifecycle in your project.

What does Feature Lifecycle need to run?

Going by SKILL.md and its folder, Feature Lifecycle needs the command-line tools its instructions call (node, git, sh and docker). Our summary lists: Docker.

Does Feature Lifecycle access the network?

SKILL.md contains no URLs. Its commands use git and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Feature Lifecycle safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Feature Lifecycle use?

Feature Lifecycle is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Feature Lifecycle use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Feature Lifecycle?

Skills that share tags, products or a category with Feature Lifecycle: Living Docs Governance (qshanx/docs-governance, 132 stars), Retrospective Codify (mizchi/skills, 356 stars), Refit Environment Retrospective (Yeachan-Heo/oh-my-claudecode, 40k stars) and Codex Retrospective (majiayu000/spellbook, 286 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Feature Lifecycle?

Inebrio (a GitHub organization) maintains it in Inebrio/Routerly, which has 100 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 6, 2026.

Source: Inebrio/Routerly on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.