Console feature cycle
The entry point for frontend feature work: a feature goes through this
skill — grilled first, then built. It takes either end — a raw idea (no
issue yet), or an issue number for one already open.
apps/console/design/development-flow.md is the spec: it defines every
stage, every rule, and the issue template. Read it now, before anything
else. This skill carries only what the spec doesn't — which mode to route
into, where each pause sits, and the commands to run. Console work requires
gh auth.
Stopping at any pause is a normal exit, not a failure. Say that the feature
resumes with /console-feature <issue-number>; a stop mid-interview restarts
it, since nothing is recorded until the issue or the comment exists.
On silence
Three kinds of pause, each named for what it does when the user doesn't
answer:
- Re-ask — every interview question, and the issue-draft confirmation.
User input is the whole point: ask again and wait. Answering a grilling
question on the user's behalf voids the interview.
- Auto-proceed — the recording pauses (decisions comment, ADR
graduation, handshake issue). They transcribe decisions the user already
made: offer, and on silence proceed.
- Halt — Build and Ship. On silence, or anything short of a clear yes,
end the session cleanly and print the resume command.
Route on the argument
- A bare number (
42, #42) or an issue URL → issue mode.
- Anything else → idea mode, the text being the feature idea.
- Nothing → ask which of the two they have, then the matching mode.
The interview
First read apps/console/PRD.md and the ADRs in
apps/console/design/decisions/ — the interview is only as sharp as the
product picture behind it.
Run the grill-me skill on the subject — the raw idea in idea mode, the
issue as written in issue mode. If it isn't invocable in this session, run
the interview yourself in its spirit: relentless rounds of pointed questions
(AskUserQuestion) attacking the walkthrough's weak points, ending only when
every unknown is decided. Every question is a re-ask pause.
Keep the running outcome — decided / why / rejected — as you go. Where it
gets written down is the one thing the two modes don't share, and spec step 1
says which goes where.
Idea mode (no issue yet)
- Check for overlap. Where the idea touches existing work,
gh issue list --repo wso2/labs-agentic-engineer --label console --label feature
(--state closed for history).
- Grill the idea. Nothing is written down until step 4.
- Draft the issue (re-ask). Fill the spec's issue template from the
interview outcome. Show the user the full draft — title and body — and
get an explicit yes.
- Create it.
gh issue create --repo wso2/labs-agentic-engineer --label console --label feature, with the agreed title and body.
- Continue to the stage walk at ADR graduation.
Issue mode (the issue exists)
Covers both an issue someone filed by hand and a feature this skill started
earlier; step 3 tells them apart.
- Fetch it, comments included:
gh issue view <n> --repo wso2/labs-agentic-engineer --comments. Closed → the feature shipped
or was abandoned, and a follow-up needs its own issue: say so and stop.
Anything that isn't a console feature (a bug, a chore, another component)
is exempt from this cycle: say so and stop.
- Find its PR:
gh pr list --repo wso2/labs-agentic-engineer --search "<n>" --state all.
- Merged → frozen; further requests become a new issue referencing
this one. Say so and stop, or offer to draft it.
- Open → feedback lives on the PR; enter the Build stage's feedback
loop.
- Is it grilled? Yes if the body has a filled Decisions section, or a
decisions comment exists. If not, grill it now, before anything else:
- Read the discussion already on the issue — it is part of the subject,
and points settled there get confirmed rather than re-litigated.
- Run the interview on the issue as written.
- Post the decisions comment (auto-proceed), showing it first.
- Edit the body for whatever the interview changed, per spec step 1, and
add the
console and feature labels if the filer didn't.
- Detect the furthest completed stage — ADR in
apps/console/design/decisions/? contract change, mocks, UI, PRD entry
on the feature branch? handshake issue open, and have its backend changes
landed on that branch? — report what you found, then continue the stage
walk from the next incomplete stage.
Stage walk
Each stage runs the spec's step of the same number (flow steps 4–7) —
read what to do there. What follows is only the pause, the completion
criterion, and the commands. Keep the issue body current with
gh issue edit while it is open.
- ADR graduation (auto-proceed). Test every decision the issue
carries against the spec's three-part rule — the ones that fail it stay
with the issue.
- Build the frontend on mocks (halt to enter). Use the
oxygen-ui
skill for all UI work. Save screenshots to a local folder, print the
paths, and ask the user to drag-and-drop them into the PR. Review
comments re-enter this stage: implement,
verify, push, checking gh pr view --json state before every push so a
PR that merged meanwhile is never pushed to. Ends on the user confirming
the feature in mock mode (halt) — that confirmation is what unlocks
the handshake.
- BE handshake (auto-proceed) — only if the issue's Contract
changes section is non-empty. Open the
aep-api issue per spec step 6,
then stop and tell the user the feature waits on it: Ship can't start
until the backend changes are on the branch.
- Ship (halt to enter; entry condition: backend changes are on the
feature branch, or the feature changed no contract). The user's
confirmation from the local-setup test is what unlocks the merge. Before
merging, check that the PR carries the PRD entry and closes the feature
issue — plus the handshake issue, if stage 3 opened one. The merge is the
last act: anything found afterward is a new issue.
1---2name: console-feature3description: Drive a console (frontend) feature through its issue-driven cycle, grilled before any code. Use when the user wants a console feature built or changed, or names an existing console feature issue; bug fixes and polish are exempt.4---56# Console feature cycle78The **entry point for frontend feature work**: a feature goes through this9skill — grilled first, then built. It takes either end — a raw **idea** (no10issue yet), or an **issue number** for one already open.1112`apps/console/design/development-flow.md` is the **spec**: it defines every13stage, every rule, and the issue template. **Read it now**, before anything14else. This skill carries only what the spec doesn't — which mode to route15into, where each pause sits, and the commands to run. Console work requires16`gh` auth.1718Stopping at any pause is a normal exit, not a failure. Say that the feature19resumes with `/console-feature <issue-number>`; a stop mid-interview restarts20it, since nothing is recorded until the issue or the comment exists.2122## On silence2324Three kinds of pause, each named for what it does when the user doesn't25answer:2627- **Re-ask** — every interview question, and the issue-draft confirmation.28 User input is the whole point: ask again and wait. Answering a grilling29 question on the user's behalf voids the interview.30- **Auto-proceed** — the recording pauses (decisions comment, ADR31 graduation, handshake issue). They transcribe decisions the user already32 made: offer, and on silence proceed.33- **Halt** — Build and Ship. On silence, or anything short of a clear yes,34 end the session cleanly and print the resume command.3536## Route on the argument3738- A bare number (`42`, `#42`) or an issue URL → **issue mode**.39- Anything else → **idea mode**, the text being the feature idea.40- Nothing → ask which of the two they have, then the matching mode.4142## The interview4344First read `apps/console/PRD.md` and the ADRs in45`apps/console/design/decisions/` — the interview is only as sharp as the46product picture behind it.4748Run the `grill-me` skill on the subject — the raw idea in idea mode, the49issue as written in issue mode. If it isn't invocable in this session, run50the interview yourself in its spirit: relentless rounds of pointed questions51(AskUserQuestion) attacking the walkthrough's weak points, ending only when52**every unknown is decided**. Every question is a **re-ask** pause.5354Keep the running outcome — decided / why / rejected — as you go. Where it55gets written down is the one thing the two modes don't share, and spec step 156says which goes where.5758## Idea mode (no issue yet)59601. **Check for overlap.** Where the idea touches existing work, `gh issue61 list --repo wso2/labs-agentic-engineer --label console --label feature`62 (`--state closed` for history).632. **Grill the idea.** Nothing is written down until step 4.643. **Draft the issue** (**re-ask**). Fill the spec's issue template from the65 interview outcome. Show the user the full draft — title and body — and66 get an explicit yes.674. **Create it.** `gh issue create --repo wso2/labs-agentic-engineer68 --label console --label feature`, with the agreed title and body.695. Continue to the stage walk at **ADR graduation**.7071## Issue mode (the issue exists)7273Covers both an issue someone filed by hand and a feature this skill started74earlier; step 3 tells them apart.75761. **Fetch it**, comments included: `gh issue view <n> --repo77 wso2/labs-agentic-engineer --comments`. **Closed** → the feature shipped78 or was abandoned, and a follow-up needs its own issue: say so and stop.79 Anything that isn't a console feature (a bug, a chore, another component)80 is exempt from this cycle: say so and stop.812. **Find its PR**: `gh pr list --repo wso2/labs-agentic-engineer --search82 "<n>" --state all`.83 - **Merged** → frozen; further requests become a new issue referencing84 this one. Say so and stop, or offer to draft it.85 - **Open** → feedback lives on the PR; enter the Build stage's feedback86 loop.873. **Is it grilled?** Yes if the body has a filled Decisions section, or a88 decisions comment exists. If not, grill it now, before anything else:89 - Read the discussion already on the issue — it is part of the subject,90 and points settled there get confirmed rather than re-litigated.91 - Run the interview on the issue as written.92 - **Post the decisions comment** (**auto-proceed**), showing it first.93 - Edit the body for whatever the interview changed, per spec step 1, and94 add the `console` and `feature` labels if the filer didn't.954. **Detect the furthest completed stage** — ADR in96 `apps/console/design/decisions/`? contract change, mocks, UI, PRD entry97 on the feature branch? handshake issue open, and have its backend changes98 landed on that branch? — report what you found, then continue the stage99 walk from the next incomplete stage.100101## Stage walk102103Each stage **runs the spec's step of the same number** (flow steps 4–7) —104read what to do there. What follows is only the pause, the completion105criterion, and the commands. Keep the issue body current with106`gh issue edit` while it is open.1071081. **ADR graduation** (**auto-proceed**). Test **every** decision the issue109 carries against the spec's three-part rule — the ones that fail it stay110 with the issue.1112. **Build the frontend on mocks** (**halt** to enter). Use the `oxygen-ui`112 skill for all UI work. Save screenshots to a local folder, print the113 paths, and ask the user to drag-and-drop them into the PR. Review114 comments re-enter this stage: implement,115 verify, push, checking `gh pr view --json state` before *every* push so a116 PR that merged meanwhile is never pushed to. Ends on the user confirming117 the feature in mock mode (**halt**) — that confirmation is what unlocks118 the handshake.1193. **BE handshake** (**auto-proceed**) — only if the issue's Contract120 changes section is non-empty. Open the `aep-api` issue per spec step 6,121 then stop and tell the user the feature waits on it: Ship can't start122 until the backend changes are on the branch.1234. **Ship** (**halt** to enter; entry condition: backend changes are on the124 feature branch, or the feature changed no contract). The user's125 confirmation from the local-setup test is what unlocks the merge. Before126 merging, check that the PR carries the PRD entry and closes the feature127 issue — plus the handshake issue, if stage 3 opened one. The merge is the128 last act: anything found afterward is a new issue.