feature-flow
Skill1 starsChanged 26 days agoMITView on GitHub
Lean engineering workflow: plan → tickets → developer → reviewer (review + verification) → DONE, with BUG/HOLD, a branch per feature, and one final check. Default mode plans tickets straight from the request; full mode (PRD → CTO → BRD) only when the user asks for documents. Use for "kerjakan sampai done", "lewat review", or resuming a board.
6 other projects use a version of this.
Adopted by
Most recently taken up by
- pankaj-mahaur/Agent-Daemontheir own version, first seen Nov 6, 2026
- rcelebrone/DotAgentstheir own version, first seen Oct 14, 2026
- dung204/hono-starter-templatetheir own version, first seen Aug 23, 2026
- sameerhimati/claude-code-kittheir own version, first seen Aug 14, 2026
- mateonunez/skillstheir own version, first seen Jul 21, 2026
- tienenwu/fablestheir own version, first seen Jul 7, 2026
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- rcelebrone/DotAgents★ 15same name
- mateonunez/skills★ 8same name
- tienenwu/fables★ 4same name
- dung204/hono-starter-template★ 1same name
- sameerhimati/claude-code-kit★ 1same name
- pankaj-mahaur/Agent-Daemon★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- coding-standardsSkill
- debug-assistantSkill
- erp-requirementsSkill
- kantorSkill
- lazySkill
- prd-writerSkill
- project-profileSkill
- task-breakdownSkill
- ticket-implementationSkill
- ticket-workflowSkill
- tiketSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
22 rules. 0 are common, 12 are distinctive, and 10 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
12
Distinctive
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 11
Write everything the user reads (answers, tickets, Riwayat, PR descriptions, documents) in Bahasa Indonesia unless the user writes in …
- Very specific: line 35
Keep <docs>/activity.json current so /noskill:kantor can show who is working right now — including stages before tickets exist (PRD, ADR, …
- Very specific: line 45
Write it with one cat > <docs>/activity.json <<'EOF' … EOF (or the Write tool) — no reads, no extra checks.
- Distinctive: line 58
Before starting, make sure you know the following (ask all at once if unclear).
- Distinctive: line 61
One repo or several: If the feature touches more than one repo (e.g.
- Distinctive: line 72
If the requirement is ambiguous, ask first — don't guess the AC.
- Very specific: line 78
Call product-manager mode QUESTIONS with the user's request verbatim, PRD path <docs>/prd.md, and the profile path.
- Very specific: line 85
Call agent cto mode ARCH_REVIEW with the PRD path, profile path(s), ADR folder <docs>/adr/, and report path <docs>/reports/_cto/arch-<n>.md.
- Very specific: line 96
Call agent brd-tracer with: PRD path, domain prefix, level (full/ringkas), ADR folder, and the Stage 0 context answers.
- Distinctive: line 98
If the agent returns a list of open questions, ask the user, then call it again with the answers.
- Very specific: line 104
Call agent task-planner with: PRD path, BRD folder (or the note "tanpa BRD"), ADR folder, ticket prefix, and codebase path (multi-repo: the …
- Very specific: line 140
Worktree per ticket: before the developer starts, run git worktree add .worktrees/<ID> -b ticket/<ID> <branch kerja> and add .worktrees/ to …
- Very specific: line 141
Send the working directory to agents: every developer and reviewer call includes that ticket's worktree path.
- Very specific: line 143
On DONE (APPROVED): commit in the worktree (<ID>: <title>), then in the main checkout git merge --no-ff ticket/<ID> into the working branch.
- Distinctive: line 164
When all tickets are DONE (or the rest are HOLD awaiting the user):
- Distinctive: line 170
Ask the user what to do with the working branch: push + create PR, merge into the source branch locally, or leave it for now.
- Distinctive: line 188
If no GitHub tool is available, show that PR description so the user can paste it.
- Very specific: line 194
If <docs>/project-profile.md contains tracker: github or tracker: notion, the ticket board is copied to that tracker.
- Distinctive: line 195
When: when a ticket is created (Stage 4 or Plan), and when a ticket becomes DONE, BUG, or HOLD.
- Distinctive: line 199
If the tracker tool is unavailable or fails, continue the flow and mention it once to the user.
- Distinctive: line 203
Don't skip a stage without its gate: Default mode: the user approves the ticket list before code is written.
- Distinctive: line 206
If the user asks for just one stage ("PRD aja", "tiketnya aja"), run only that stage and then ask whether to continue.
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Feature Flow
noskill docs folder: ${user_config.docs_dir} — written as <docs> below. If that value still appears literally (not substituted), use docs/noskill.
Write everything the user reads (answers, tickets, Riwayat, PR descriptions, documents) in Bahasa Indonesia unless the user writes in another language.
You are the orchestrator (engineering manager + scrum master). You talk to the user, run the stages below in order, and are the only one who moves ticket status (see skill ticket-workflow). Agents do the heavy work; you pass context through files in <docs>/.
Default: Stage 0 ─► Plan (tiket) ─► Stage 5: developer → ticket-reviewer (review + verifikasi, tanpa DB) ─► DONE ─► Stage 6: cek penuh + DB/E2E (+ cto SIGN_OFF) ─► PR
└──────── revisi ◄────────┘
Full (hanya bila diminta): product-manager PRD ─► cto ARCH_REVIEW ─► brd-tracer ─► task-planner ─► Stage 5 ─► Stage 6The team:
| Role | Agent | Writes |
| Product Manager | product-manager | <docs>/prd.md |
| CTO | cto | <docs>/adr/, architecture review, final sign-off |
| Business/System Analyst | brd-tracer | <docs>/01..05 |
| Tech Lead | task-planner | <docs>/tickets/ |
| Backend / Frontend / Fullstack Developer | backend-developer / frontend-developer / developer (by ticket layer) | code + tests |
| Senior Reviewer + QA | ticket-reviewer | review report (review + test/verification evidence) |
| Engineering Manager | you (this session) | ticket status, Riwayat, commits, PR |
Activity File
Keep <docs>/activity.json current so /noskill:kantor can show who is working right now — including stages before tickets exist (PRD, ADR, BRD). One small JSON object, overwritten each time (never appended):
{"agent": "product-manager", "status": "working", "stage": "Stage 1–2 PRD", "task": "Menulis PRD SO sample ke QAD", "ticket": null, "at": "2026-10-31T09:15:00Z"}agent: the agent name you are about to call (product-manager,cto,brd-tracer,task-planner,backend-developer,frontend-developer,developer,ticket-reviewer), orfeature-flowfor yourself.status:working— Stage 5 (developer, reviewer): written by you, in the same Bash call as the ticket's status change right before the agent call (these agents don't write it); stages before tickets exist (PM, CTO, analyst, tech lead): each agent writes its ownworkingline as its first action; you writeworkingfor stages you run yourself,waiting_userwhen you ask the user something or wait at a gate (agent: "feature-flow",task= what you asked);doneat the end of Stage 6.ticket: the ticket ID during Stage 5, otherwisenull.task: one short line in the user's language.at:date -u +%Y-%m-%dT%H:%M:%SZ.
Write it with one cat > <docs>/activity.json <<'EOF' … EOF (or the Write tool) — no reads, no extra checks. Multi-repo: only in the docs repo. It is a display aid only; if writing it fails, continue the flow.
Choose a Mode
| Mode | When | Stages run |
| Default | Everything, unless the user asks for documents | Stage 0 → Plan → Stage 5 → Stage 6 |
| Full | Only when the user explicitly asks for a PRD/BRD/ADR or formal sign-off ("buatkan PRD", "pakai BRD", "full mode") | Stages 0 → 6, all |
Don't pick full mode yourself just because a feature is large — a large feature is a longer plan, not more documents. If a requirement is unclear, ask the user (Plan step 3) instead of writing a PRD. Very small changes (typo, one config line) don't need feature-flow at all — just do them.
Stage 0 — Context
Before starting, make sure you know the following (ask all at once if unclear). Default mode needs only points 2, 3 and 5:
- Module/domain name → ID prefix (
INV,PUR, …) and ticket prefix (WMS-BE, …) - New project (greenfield) or adding to an existing codebase (where is its path/repo)
- One repo or several. If the feature touches more than one repo (e.g. backend + web + mobile), see the Multi-Repo section.
- Full mode only — BRD level: lengkap (BR→UAT, for cross-division features or ones needing formal sign-off/UAT), ringkas (US→AC→TECH + TC), or tanpa BRD (PRD is detailed enough; tickets are created directly from the PRD)
- Which stage to start from. If
<docs>/prd.md, BRD documents, or<docs>/tickets/already exist, continue from the next stage — don't rewrite. If old tickets were made under different rules (e.g. split per layer), suggest/noskill:tiket rapikanfirst. - Project profile. If
<docs>/project-profile.mddoesn't exist and the plan has more than 3 tickets, run skillproject-profilefirst (once per project). Smaller plans: use it if present; if not, just continue and offer to create it at the end. If it exists, just use it; refresh only if a manifest/lockfile changed since the commit in its header or a command in the profile fails. - Working branch. If the project is a git repo, create a new branch from the current branch before the first code is written:
feat/<prefix-atau-slug>for features,fix/<slug>for bugs. All ticket commits go to this branch. Multi-repo: same branch name in every repo that has tickets. If the working tree isn't clean, ask the user first (commit, stash, or continue on the current branch). Add.noskill-cache/and<docs>/activity.jsonto.git/info/exclude(cache for fast typecheck/lint, and the Activity file below).
Plan (default mode)
Replaces Stages 1–4. The plan is the ticket files — no PRD, BRD, or ADR.
- Read the code related to the request (grep, open the files) so
File/Lokasicontains real paths. Record what you find in the ticket's## Catatansection — reusable helpers (path + function name), patterns/files to use as examples, and existing test files — so the developer doesn't repeat the same search. - Up to 3 tickets: write them yourself. More than 3: call
task-plannerwith the user's request verbatim, the Stage 0 answers, your notes from step 1, the ticket prefix, and the codebase path (or repo list) — no PRD/BRD. Either way, write each ticket following the Ticket Rules (Aturan Tiket) intask-breakdown— one per bug, per endpoint, or per feature; if both BE and FE change, one BE ticket with## Kontrak APIplus one FE ticket withintegrates_with— at<docs>/tickets/<ID>.mdinticket-workflowformat: IDFIX-NNNfor a bug orTASK-NNNfor a small feature, or the module prefix from Stage 0 (continue existing numbering),trace: —,complexityandlayer(seeticket-workflow), AC covering the positive and negative side (go through the AC checklist intask-breakdown: numeric/DB column limits, case-insensitive matching, empty input, exact error responses, upload/import, dates, access),File/Lokasi, andCara Verifikasias real commands. - If the requirement is ambiguous, ask first — don't guess the AC.
- Gate: show the board (AC + File/Lokasi per ticket; Kontrak API for BE tickets with an FE counterpart) and ask for approval plus the run mode (as in Stage 4). Once approved, go to Stage 5.
Stage 1–2 — PRD (Product Manager) — full mode only
Agent product-manager cannot talk to the user, so you relay in two calls (ERP/WMS domain design from erp-requirements Part A is folded into its questions):
- Call
product-managermodeQUESTIONSwith the user's request verbatim, PRD path<docs>/prd.md, and the profile path. Ask the user all returned questions at once — questions marked[pilihan: …]through the interactive choice tool if available, the rest as a numbered list. Wait for the answers. - Call the same agent (SendMessage to its ID) with mode
WRITEand the answers. If the user asked for "PRD dari kode yang ada", use modeREVERSEinstead of these two steps. If the user said to skip questions, go straight toWRITEwith assumptions marked.
Gate: show the PRD summary and its [asumsi] list, and ask the user to approve the PRD. Revision notes go back to the same product-manager agent (mode WRITE with the notes).
Stage 2b — Architecture Review (CTO)
Call agent cto mode ARCH_REVIEW with the PRD path, profile path(s), ADR folder <docs>/adr/, and report path <docs>/reports/_cto/arch-<n>.md.
GO→ continue to Stage 3.GO_WITH_NOTES→ show the ADR titles and decisions (one line each), then continue unless the user objects.NO_GO→ show the CTO's questions/required PRD changes to the user; send the answers toproduct-manager(modeWRITEwith notes), get PRD approval again, then re-runcto. After a secondNO_GO, stop and let the user decide.
From here on, pass the ADR folder to brd-tracer, task-planner, and every developer and reviewer call.
Stage 3 — BRD Traceability
Skip this stage if level = tanpa BRD; go straight to Stage 4.
Call agent brd-tracer with: PRD path, domain prefix, level (full/ringkas), ADR folder, and the Stage 0 context answers. Output goes to <docs>/01-business/ … <docs>/05-testing/.
If the agent returns a list of open questions, ask the user, then call it again with the answers.
Gate: show a summary (count of BR/US/AC/TECH/TC) and ask for user approval.
Stage 4 — Tickets
Call agent task-planner with: PRD path, BRD folder (or the note "tanpa BRD"), ADR folder, ticket prefix, and codebase path (multi-repo: the ## Repo table from the profile). Output is ticket files <docs>/tickets/<ID>.md with status TODO.
Gate: show the board (see ticket-workflow Board section) and ask for approval. If there are per-layer tickets (separate migration/DTO/test), merge them before starting. For BE tickets with an FE counterpart, also show their Kontrak API — the contract is approved together with the ticket list. Also ask the run mode: automatic (keep going until all DONE or a HOLD occurs) or per ticket (stop and report after each ticket is DONE), and sequential or parallel (developer starts the next ticket while the previous one is in review — see Parallel Mode). Default: automatic, sequential.
Fresh session for the ticket loop. Everything Stage 5 needs lives in files (tickets, reports, profile), and every orchestrator turn re-reads the whole conversation. With more than ~5 tickets (either mode): after the ticket gate, tell the user once that Stage 5 is cheaper in a new session (/clear, then /noskill:tiket lanjut). Continue here if they prefer.
Stage 5 — Ticket Loop
Pick tickets in the order given in ticket-workflow (BUG first, then TODO whose dependencies are DONE).
No database or server in Stage 5. Per-ticket tests and verification run without them: BE with mocked repositories and in-process endpoint tests (Jest + supertest, httptest, …), FE with the API mocked from the Kontrak API. Don't start an environment or create a test database here, and don't pass one to agents. Specs that truly need a real database (migration, DB constraint, raw query, transaction/locking) are written by the developer, listed in its report under "Dicek di Stage 6", and run once in Stage 6 together with the E2E suite.
For one ticket:
Agent reports to file. Every agent call includes its report path: <docs>/reports/<ID>/dev-<n>.md, or review-<n>.md (n = rounds + 1). The agent writes the full report there and answers you in at most 6 lines (verdict, summary, path). Don't read the full report unless needed (e.g. to compose HOLD questions) — just pass the path to the next agent.
- Develop — set
IN_PROGRESS, call the developer agent picked by the ticket'slayer(be→backend-developer,fe→frontend-developer, otherwisedeveloper) with the ticket path and report path. If the picked agent is not installed, usedeveloper.- Model: ticket
complexity: simple→ call developer with modelsonnet;complexor empty → session model. Asimpleticket that has gone back to the developer twice (rounds= 2) is redone with the session model. - Never pass
modeltoticket-reviewer,task-planner, orbrd-tracer— their ownmodel: sonnetapplies; overriding it with the session model multiplies the cost of the stages that run most often. If any agent fails withmodel_not_found, tell the user once that the Sonnet alias is not reachable (checkANTHROPIC_DEFAULT_SONNET_MODELin their settings), then re-run that call with the session model. - Revision (CHANGES_REQUESTED/BUG): continue the same developer. Send the latest review report path (or the Stage 6 bug report) to the developer agent that worked the ticket before (SendMessage to its agent ID — keep that ID for the session), not a new agent, since it already has the ticket and code context. Call a new developer only if the old agent is unavailable (new session, after HOLD, or model change).
READY_FOR_REVIEW→ setREVIEWBLOCKED→ setHOLD
- Model: ticket
- Review + verification — call agent
ticket-reviewerwith the ticket path, the latest developer report path (contains RED evidence and gates), and the review report path. The reviewer also runs the ticket's DB-free tests and Cara Verifikasi — there is no separate QA step.APPROVED→ setDONE, tick the AC in the ticket file, thengit committhe changes on the working branch with message<ID>: <title>(local commit, no push; skip if not a git repo or the user said not to commit).CHANGES_REQUESTED→ setIN_PROGRESS,rounds + 1, write a findings summary (1–3 lines) and the review report path in Riwayat, back to step 1BLOCKED→ setHOLD- Bugs outside this ticket named by the reviewer → new
BUG-NNNticket perticket-workflow
rounds= 3 → setHOLDwith a summary of why it keeps failing.
On every status change: update status in the frontmatter and add one line to ## Riwayat (format YYYY-MM-DD HH:MM FROM → TO (catatan)) in the same edit, before calling the agent of the new stage (set REVIEW before calling ticket-reviewer) — never batch several changes at the end — so the board and /noskill:kantor show the stage that is actually running. Use date and time (date '+%Y-%m-%d %H:%M'), so /noskill:tiket board can compute each stage's duration. When the line closes an agent's stage and the Agent tool result shows its usage (e.g. 45.2k tokens · 3m 10s), end the line with (45.2k token, 3m) so /noskill:kantor can show tokens per agent and per ticket; skip it when no usage is shown. Do the status edit, the Riwayat line, and the activity.json write in one Bash call per transition. Report to the user one line per change (WMS-BE-004: REVIEW → DONE), not long narration. When calling an agent, send the ticket path and the paths that stage needs: latest review report path for the developer, latest developer report path for the reviewer. Don't send file or report contents — agents read files themselves. Every agent call also includes Waktu sekarang: <date '+%Y-%m-%d %H:%M %z'>, so agents without Bash can timestamp what they write correctly (never write a placeholder such as 00:00).
Parallel Mode (pipeline)
Like a real team: while ticket A is in review, the developer is already working on ticket B. Git repos only.
- Tickets that may run concurrently: all their
depends_onare DONE (integrates_withdoesn't block — an FE ticket may be worked alongside its BE ticket based on the Kontrak API), theirFile/Lokasidoesn't overlap with another active ticket, and the ticket doesn't change dependencies/lockfile. Otherwise the ticket waits. Max 2 active tickets at once; 3 if the active tickets are in different repos (e.g. a BE–FE pair inapiandweb, which can't conflict on files). The user may ask for more (max 4). - Worktree per ticket: before the developer starts, run
git worktree add .worktrees/<ID> -b ticket/<ID> <branch kerja>and add.worktrees/to.git/info/exclude. If the project has uncommitted dependency folders (node_modules,vendor), symlink them inside the worktree so tests run without reinstalling. - Send the working directory to agents: every developer and reviewer call includes that ticket's worktree path. Ticket files stay in
<docs>/tickets/in the main checkout, and only you write them. - Run agents in the background and process verdicts in the order they finish. As soon as the developer reports
READY_FOR_REVIEWfor ticket A, call the reviewer for A and at the same time the developer for the next eligible ticket. - On DONE (APPROVED): commit in the worktree (
<ID>: <title>), then in the main checkoutgit merge --no-ff ticket/<ID>into the working branch. Then remove the ticket's worktree and branch, and commit the ticket file update.- If the merge conflicts:
git merge --abort, set the ticket toIN_PROGRESSwith the note "gabungkan branch kerja terbaru ke ticket/<ID>dan selesaikan konflik", and the ticket goes through review again.
- If the merge conflicts:
- Total tokens are about the same as sequential mode since the work is the same; what shrinks is waiting time.
Multi-Repo
For one feature touching several repos (e.g. api NestJS, web Vue, mobile Flutter).
- Docs repo: the repo this session runs in. PRD, BRD, and all tickets live only in this repo's
<docs>/— one board for the whole feature. Other repos get no noskill folder. - Repo list is in the
## Reposection of<docs>/project-profile.md: short name, path relative to the docs repo, and its profile file. Other repos' profiles are stored in the docs repo as<docs>/project-profile-<nama>.md(runproject-profilefor that repo). If a repo path doesn't exist on this machine, ask the user — don't guess. - One ticket = one repo. A ticket has field
repo: <nama>andFile/Lokasirelative to that repo's root. A change needing two repos is split into two tickets: theapiticket holds the Kontrak API, and thewebticket setsintegrates_withto thatapiticket — worked concurrently, each verified against the contract with mocks; the realweb↔apiflow is checked in Stage 6. - Working branch with the same name is created in every repo that has tickets, before the first ticket in that repo is worked.
- When calling agents, send working directory = that ticket's repo path (or its worktree in parallel mode, created with
git -C <path repo> worktree add …) and that repo's profile path. The ticket path stays in the docs repo. - Commit code in the ticket's repo (
<ID>: <title>). Ticket file updates are committed in the docs repo. - Cross-repo check: in Stage 6, start the environment from the
apirepo's working branch and run thewebrepo's E2E suite against it. If it can't run here, tell the user and list it under "belum dicek" in the PR. - Tickets in different repos never overlap
File/Lokasi, so in parallel mode they can run concurrently as long asdepends_onis met — including BE–FE pairs viaintegrates_with.
HOLD: don't stop the whole flow just because one ticket is HOLD. Continue other tickets that don't depend on it. Once no ticket can run, show all HOLD tickets at once with their questions to the user (they can also answer from /noskill:kantor; /noskill:tiket lanjut picks those answers up). After they answer, record the answer in Riwayat, return the ticket to its pre-HOLD status, reset rounds to 0 if the requirement changed, and continue the loop.
Stage 6 — Finish
When all tickets are DONE (or the rest are HOLD awaiting the user):
- Show the final board.
- Check everything once here. During the ticket loop, tests and gates ran only for what tickets touched, without a database or server. At this stage, on the working branch (multi-repo: in every repo with tickets): run typecheck, lint, and the full DB-free test suite; then, if the project has integration specs or an E2E suite (including the "Dicek di Stage 6" specs from developer reports), start the profile's
Jalankan environment/ test database once in the background, apply migrations, wait forHealth check, run those suites once, and stop/drop everything afterwards. If the profile doesn't record those commands, find them (README, docker-compose, package scripts) or ask the user, and record them in the profile. Never hand environment setup to an agent. Show a summary. If anything fails, find the causing ticket (git logper file), create aBUG-NNNticket withrelatedto it, and run it through the Stage 5 loop before continuing. - Final review (full mode, or more than 3 tickets). Per-ticket reviews can't see cross-ticket problems, so after the checks pass call agent
ctomodeSIGN_OFFonce with the working branch, its base branch, the ticket folder, the ADR folder, the check results, and report path<docs>/reports/_cto/signoff-<n>.md.SIGN_OFF→ continue.CONCERNS→ each bug item becomes aBUG-NNNticket (relatedto the named ticket) and goes through the Stage 5 loop; each decision item is asked to the user. Then callctoSIGN_OFFonce more. After a secondCONCERNS, show the remaining items to the user and let them decide.
- Ask the user what to do with the working branch: push + create PR, merge into the source branch locally, or leave it for now. Don't push or merge without the user's answer.
- If the user chooses push + PR: push the working branch, then create the PR via the available GitHub tool (GitHub connector or
gh). Build the PR description from the ticket files, not from scratch:
If no GitHub tool is available, show that PR description so the user can paste it. Multi-repo: one PR per repo, containing only that repo's tickets. Create PRs in dependency order (provider first, e.g.## Ringkasan <1–3 kalimat: apa yang berubah dan kenapa> ## Tiket | ID | Judul | AC | Rounds | |---|---|---|---| | FIX-001 | ... | 4/4 ✓ | 1 | ## Verifikasi - <command test suite penuh> → <jumlah pass/fail> - <typecheck/lint kalau ada> ## Catatan - <keputusan dari HOLD, temuan di luar scope, hal yang belum dicek>apibeforeweb), then add a## PR terkaitsection with links to the other repos' PRs in every PR and state the merge order. - Offer
user-guide(end-user documentation) andstandup-update(progress summary from ticket Riwayat) — both in pluginnoskill-extras, if installed.
Tracker Sync (optional)
If <docs>/project-profile.md contains tracker: github or tracker: notion, the ticket board is copied to that tracker. One-way: ticket files remain the source of truth; the tracker is only a mirror.
- When: when a ticket is created (Stage 4 or Plan), and when a ticket becomes DONE, BUG, or HOLD. Other status changes aren't synced, to save tool calls.
- GitHub Issues: one issue per ticket. Title
<ID>: <title>, body contains the AC, labelnoskill:<status>. Issue is closed on DONE. - Notion: one row per ticket in database
notion_database(columns ID, Judul, Status). Look up an existing row by ID before creating a new one. - Store the issue number or page URL in the ticket frontmatter (
tracker_ref:) so later updates don't create duplicates. - If the tracker tool is unavailable or fails, continue the flow and mention it once to the user. Sync must never stop the work.
Rules
- Don't skip a stage without its gate. Default mode: the user approves the ticket list before code is written. Full mode: the user also approves the PRD and BRD (and sees the CTO's ADRs).
- You don't write code yourself in Stage 5 — that's the developer agents' job. You don't judge code yourself — that's
ticket-reviewer. Your role is moving tickets based on verdicts. - If agents are unavailable (e.g. on Claude.ai), do that stage yourself in this session following the same skills the agent uses (
prd-writer,erp-requirements,task-breakdown,ticket-implementation,coding-standards,debug-assistant; for the CTO stages, the checks listed in agentcto), but still run review + verification as a separate step with an explicit verdict. - If the user asks for just one stage ("PRD aja", "tiketnya aja"), run only that stage and then ask whether to continue.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

