diff --git a/plugins/genie/skills/README.md b/plugins/genie/skills/README.md
index c1064de8b..54278639d 100644
--- a/plugins/genie/skills/README.md
+++ b/plugins/genie/skills/README.md
@@ -57,8 +57,8 @@ separately installed personal skills remain user-owned and are never adopted by
| Area | Skills |
|------|--------|
-| Lifecycle | `brainstorm`, `wish`, `review`, `work`, `fix`, `trace` |
-| Orchestration | `genie`, `pm`, `dream`, `council`, `omni` |
+| Lifecycle | `brainstorm`, `quick`, `wish`, `review`, `work`, `fix`, `trace` |
+| Orchestration | `genie`, `dream`, `council`, `omni` |
| Quality lanes | `architecture`, `code-quality`, `dx-docs`, `perf`, `qa`, `repo-hygiene`, `supply-chain` |
| Supporting workflows | `docs`, `refine`, `report`, `genie-hacks` |
diff --git a/plugins/genie/skills/genie/SKILL.md b/plugins/genie/skills/genie/SKILL.md
index 0f5b68861..2f998ca1c 100644
--- a/plugins/genie/skills/genie/SKILL.md
+++ b/plugins/genie/skills/genie/SKILL.md
@@ -39,7 +39,7 @@ For requests that did not bypass, classify the user's request into exactly one c
| Category | Signal | Route |
|----------|--------|-------|
-| **explicit** | Names a skill: "brainstorm X", "wish X", "review X", "work X", "council X", "refine X", "fix X", "trace X", "docs X", "report X", "dream", "pm", "wire omni", "hacks" | Invoke the named skill through the active runtime's skill surface and pass through the remaining request. |
+| **explicit** | Names a skill: "brainstorm X", "wish X", "review X", "work X", "council X", "refine X", "fix X", "trace X", "docs X", "report X", "dream", "quick", "wire omni", "hacks" | Invoke the named skill through the active runtime's skill surface and pass through the remaining request. |
| **concrete** | Clear feature/change: "add X", "implement Y", "build a..." | `wish` |
| **fuzzy** | Exploratory: "I'm not sure how to...", "what if we...", "how should I handle..." | `brainstorm` |
| **bug** | "X is broken", "error when...", "something's wrong with..." | `report` |
diff --git a/plugins/genie/skills/genie/reference/lifecycle.md b/plugins/genie/skills/genie/reference/lifecycle.md
index faf82293b..5a5e4160b 100644
--- a/plugins/genie/skills/genie/reference/lifecycle.md
+++ b/plugins/genie/skills/genie/reference/lifecycle.md
@@ -61,7 +61,7 @@ verdict that was not persisted does not advance the lifecycle.
| `trace` | Reproduce and isolate root cause without patching | Unknown issues needing investigation |
| `docs` | Audit, generate, and validate documentation against code | Docs stale or missing |
| `dream` | Batch-execute SHIP-ready wishes overnight | Multiple wishes ready |
-| `pm` | Backlog triage, prioritization, tracking, reporting | Managing a stream of work |
+| `quick` | Ship one tiny low-risk change through verified dev read-back within 60 minutes | A fully decided change fits the hard one-hour contract |
| `omni` | Wire a Genie agent to an Omni channel | Channel wiring |
| `genie-hacks` | Browse community patterns and hacks | Looking for prior art |
diff --git a/plugins/genie/skills/pm/SKILL.md b/plugins/genie/skills/pm/SKILL.md
deleted file mode 100644
index f177b5950..000000000
--- a/plugins/genie/skills/pm/SKILL.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-name: pm
-description: "Full PM playbook — triage backlog, prioritize, assign, track, report, escalate. Copilot, autopilot, or pair modes."
----
-
-# pm — Project Management Playbook
-
-**Runtime syntax:** invoke the plugin copy through the active runtime's owner-qualified skill selector; use a bare selector only when intentionally selecting a user-tier copy (a separately installed personal copy; Genie no longer seeds this tier). Cross-skill prose below uses bare names as portable semantic routes; the orchestrator resolves the selector for the active runtime.
-
-Manage the delivery lifecycle: triage, prioritize, dispatch, track, report, escalate. The PM orchestrates — it never writes code. When one path clearly follows from the request, recommend it and proceed; do not re-litigate decisions the user already made.
-
-## When to Use
-- A backlog needs triage, prioritization, or tracking
-- Work must be coordinated across multiple subagents
-- User asks about task status, project health, or next actions
-
-## Modes
-
-Pick the mode from who makes decisions; switch when that changes.
-
-| Mode | Decisions | Use when | Exit |
-|------|-----------|----------|------|
-| **Copilot** | Human approves priorities, scope, escalations; PM proposes and executes | A human is actively participating | Human takes over, or all work shipped |
-| **Autopilot** | PM decides within Authority Boundaries; a decision-maker persona subagent arbitrates ship/no-ship calls | "Run autonomously" / overnight | All shipped, or a decision exceeds authority — escalate to human |
-| **Pair** | Shared with one specialist (brainstormer, council, reviewer, qa) for a focused phase | A phase needs domain judgment | Specialist delivers, PM resumes |
-
-Mode contracts and the decision-maker persona prompt: `references/modes.md`.
-
-## Lifecycle Routing
-
-The lifecycle is owned by its skills — route to them, never restate them here:
-
-| Phase | Skill | PM's job |
-|-------|-------|----------|
-| Triage | — | Prioritize; decide what enters the pipeline |
-| Explore | `brainstorm` | Dispatch when scope is fuzzy |
-| Plan | `wish` | Dispatch when scope is clear; the wish creates per-group tasks |
-| Execute | `work` | Dispatch orchestration; waves come from WISH.md |
-| Validate | `review` | Gate every group; FIX-FIRST → `fix` (max 2 loops) |
-| Investigate | `trace`, `report` | Unknown failure: diagnose before fixing |
-| Ship | PR to `dev` | Request or consume task-scoped PR/merge authority; merge only when CI green + review SHIP |
-
-Document status (`DRAFT` / `FIX-FIRST` / `APPROVED` / `IN_PROGRESS` / `BLOCKED` / `SHIPPED`) tracks lifecycle phase; SHIP/FIX-FIRST/BLOCKED are reviewer verdicts, and the invoking orchestrator persists the corresponding transition. The task DB tracks per-group execution state.
-
-## Specialist Routing
-
-Default chain: engineer → reviewer → qa → fix. Augment when the work calls for it:
-
-| Condition | Dispatch |
-|-----------|----------|
-| Docs deliverables in scope | docs subagent, parallel with engineer |
-| Architecture restructuring | refactor-briefed engineer for that group |
-| Failure with unknown root cause | `trace` before `fix` |
-| Review returns FIX-FIRST | Diagnose first; simplify an overdesigned plan, otherwise `fix` (max 2 loops, then escalate) |
-| High-stakes decision with tradeoffs | `council` (advisory) |
-
-## Dispatch
-
-All implementation goes to subagents via the **native delegation surface** (native runtime). Dispatch independent work in one message so it runs in parallel; every brief carries curated context, the evidence expected back, and stop conditions (`work` § Context Curation is the contract). Background subagents notify you on completion — never sleep-poll. Follow-ups to a running subagent go through **native follow-up messaging** (multi-session dispatch is retired; native delegation is the only dispatch mode — see `work` § Dispatch).
-
-## Board Operations
-
-```bash
-genie task create --title "
" [--wish --group ] # add work
-genie task list [--status blocked|ready|in_progress|done] [--wish ] [--json]
-genie board [--wish ] [--json] # kanban snapshot
-genie task status # detail, dependencies, stage log
-genie task checkout --worker # atomic claim — workers run this
-genie task done # complete after review + validation
-genie task export # full DB state as JSON (reporting)
-```
-
-The dependency DAG lives in WISH.md, not task rows — sequence waves from the document, never from `ready` status alone (see `work` § State Management).
-
-## Status Reporting (grounded)
-
-Every claim in a status report must trace to tool output from this session — `genie board --json`, `genie task export`, `git log`, `gh pr list`, subagent final messages. State explicitly what is verified, what failed, and what was skipped. Dispatched is not done: never present in-flight or intended work as completed until its evidence is in hand.
-
-```
-## Status —
-Shipped:
-In progress:
-Blocked:
-Next:
-```
-
-## Authority Boundaries
-
-Apply in every mode; exceeding one escalates to the human. Selecting Autopilot
-does not itself authorize external repository writes. The operator may grant a
-bounded Autopilot scope that names the repository, target branch, wishes/PRs,
-and whether merged-branch cleanup is allowed; only actions inside that recorded
-scope may proceed without another checkpoint.
-
-| Action | Authority |
-|--------|-----------|
-| Create/claim/complete tasks | Autonomous |
-| Dispatch subagents (engineer, reviewer, qa, fix, docs, trace) | Autonomous |
-| Prepare commits and a proposed PR targeting `dev` | Autonomous inside the assigned repository/worktree |
-| Create or publish a PR | Explicit task-scoped grant, or a bounded Autopilot grant that names the repository and target branch |
-| Merge to `dev` | Separate explicit task-scoped merge grant, or a bounded Autopilot grant that names the eligible wishes/PRs |
-| Delete feature branches | Explicit cleanup grant; only after the associated merge is verified |
-| Merge to `main`/`master` | **Human only** |
-| Client communication; budget/spending | **Human only** |
-| Scope changes (add/remove features) | Human approval required |
-
-## Checkpoints
-
-Pause for a human decision when an external write lacks the task-scoped grant
-above, an action is destructive or irreversible, scope genuinely changes,
-credentials are involved, or an ambiguity changes what is safe to do.
-Read-only triage, planning, local validation, and reversible worktree changes
-remain autonomous inside the assigned scope.
-
-## Rules
-- Never write code — dispatch engineers.
-- Never skip the review gate; never ship CRITICAL/HIGH gaps.
-- Surface blockers immediately, each with a proposed unblocking action.
-- Track only real, concrete work — no speculative tasks.
-- Final messages lead with outcome, then evidence, then next action.
diff --git a/plugins/genie/skills/pm/agents/openai.yaml b/plugins/genie/skills/pm/agents/openai.yaml
deleted file mode 100644
index 02115731d..000000000
--- a/plugins/genie/skills/pm/agents/openai.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-interface:
- display_name: "Project Management"
- short_description: "Coordinate backlog, delivery gates, and escalation"
- default_prompt: "Coordinate this work through the appropriate delivery and release gates."
diff --git a/plugins/genie/skills/pm/references/modes.md b/plugins/genie/skills/pm/references/modes.md
deleted file mode 100644
index e13805c90..000000000
--- a/plugins/genie/skills/pm/references/modes.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# PM Modes — Detail
-
-Decision rules live in `../SKILL.md` § Modes. This file carries the per-mode contracts and the autopilot decision-maker persona.
-
-## Copilot (PM + human)
-
-| PM does | Human does |
-|---------|------------|
-| Triage and prioritize backlog | Approve priorities |
-| Propose assignments and dispatch | Confirm assignments |
-| Monitor progress, surface blockers | Make scope decisions |
-| Prepare status reports | Review and distribute |
-| Recommend escalations | Authorize escalations |
-
-Entry: human invokes `pm` or asks for help managing work. Exit: human takes over, or all tasks shipped.
-
-## Autopilot (PM + decision-maker persona)
-
-Spawn one fresh-context decision-maker subagent at run start. Route ship/no-ship and prioritization judgment calls back to that same thread with native follow-up messaging; it emulates the human only within the documented Authority Boundaries. Anything past a boundary still goes to the real human.
-
-Entry: human says "run autonomously" / "autopilot". That phrase grants decision
-autonomy only; external repository writes still require the bounded scope from
-`../SKILL.md` (repository, target branch, eligible wishes/PRs, and cleanup
-policy). Exit: all authorized tasks shipped, or a decision/action exceeds that
-scope.
-
-### Default persona: pragmatic engineering manager
-
-```
-You are a pragmatic engineering manager making ship/no-ship decisions.
-
-Decision style:
-- Approve when acceptance criteria are met — don't block for style preferences
-- Push back on scope creep — if it's not in the wish, it waits
-- Prioritize shipping over perfection — good enough today beats perfect next week
-- Escalate security and data-integrity issues immediately — never approve shortcuts here
-- Trust the evidence behind the verdict — if `review` says SHIP, approve unless you see something it missed
-
-When deciding:
-1. Read the wish acceptance criteria
-2. Check that each criterion has evidence of completion
-3. Yes, and no CRITICAL/HIGH gaps → approve
-4. Gaps exist → request specific fixes, not vague improvements
-5. Scope creep detected → reject additions, keep the wish focused
-
-You represent the human. The PM asks, you decide. Be decisive — slow decisions block teams.
-```
-
-### Customizing
-
-Provide your own persona prompt in the subagent brief instead. A persona defines:
-- **Decision style** — what to approve, what to reject
-- **Priority framework** — how to weigh competing concerns
-- **Escalation triggers** — when to defer to a human instead of deciding
-
-## Pair (PM + specialist)
-
-| Pair with | When |
-|-----------|------|
-| Brainstormer | Ideas need exploring before scoping |
-| Council | Major design decisions need multi-perspective input |
-| Reviewer | A quality gate needs PM context |
-| QA | Test strategy needs PM input |
-
-Entry: PM detects a phase that benefits from specialist judgment. Exit: specialist delivers, PM resumes the normal flow.
diff --git a/plugins/genie/skills/quick/SKILL.md b/plugins/genie/skills/quick/SKILL.md
new file mode 100644
index 000000000..59363723a
--- /dev/null
+++ b/plugins/genie/skills/quick/SKILL.md
@@ -0,0 +1,135 @@
+---
+name: quick
+description: "Ship tiny low-risk changes to dev within one hour."
+---
+
+# quick — One-hour delivery
+
+**Runtime syntax:** invoke the plugin copy through the active runtime's owner-qualified skill selector; use a bare selector only when intentionally selecting a user-tier copy (a separately installed personal copy; Genie no longer seeds this tier). Cross-skill prose below uses bare names as portable semantic routes; the orchestrator resolves the selector for the active runtime.
+
+Deliver one tiny, already-decided change through implementation, CI, merge, deployment and read-back in `dev`. The contract is **request → deployed-dev read-back within 60 minutes**; code or a PR without live read-back is not success.
+
+## When to Use
+
+Use only when all are true:
+
+- one existing behavior, repository, card and payout;
+- low-impact, reversible change with an objective focused check;
+- target is `dev`, never homolog or production;
+- CI, deployment and read-back conservatively fit inside 60 minutes;
+- existing merge authority already covers the repository and eligible `dev` merge;
+- no unresolved product or architecture decision.
+
+Do not use for migrations; auth, permissions, secrets or tenant boundaries; billing or money; destructive/data-loss behavior; public API/protocol compatibility; irreversible/shared infrastructure; production mutation; multiple repos or independent payouts; or incidents with an unknown cause.
+
+## Admission — minute 0–5
+
+1. Record the start and hard deadline with `terminal`; the deadline never moves.
+2. Inspect the live card, repository, branch, CI, dev target and deployment path.
+3. Verify an existing task-scoped merge grant or bounded Autopilot grant authorizes this repository and eligible `dev` merge. Do not request or manufacture authority inside Quick.
+4. Write a one-screen execution contract in the response or worker brief:
+ - **core:** independently satisfies the request;
+ - **flex:** explicitly cuttable;
+ - **oracle:** focused check and visible dev read-back;
+ - **target:** exact repository, base branch and dev environment;
+ - **stop triggers:** any condition that rejects or ends Quick.
+5. Refuse before implementation if any eligibility fact is missing. Return the inspected evidence and route the demand to the normal lifecycle; do not start that lifecycle silently.
+
+Admission is complete only when every eligibility fact and the existing merge authority are proven.
+
+## Execute — minute 5–35
+
+1. Start exactly one executor through the active runtime's native delegation surface, inheriting the active runtime model and configuration.
+2. Use one isolated worktree from the current target base. No fan-out, board/group ceremony, independent reviewer or model-selection machinery.
+3. Implement only the core and a focused regression test where practical. Follow repository-local TDD and validation rules.
+4. Cut flex immediately when evidence threatens the deadline.
+
+**No new surface enters after minute 35.** At minute 35 the branch must contain a complete candidate core or Quick stops as `quick-missed`.
+
+## Integrate — minute 35–50
+
+1. Run the focused test and every affected repository check.
+2. Perform one self-review of the exact diff for correctness, scope, secrets and target identity.
+3. Apply at most one bounded correction while time remains.
+4. Open the PR to `dev` and wait for every required CI check. Never bypass or weaken checks.
+
+**No new code change starts after minute 50.** If required CI is not green or the candidate is not merge-ready, stop as `quick-missed`.
+
+## Deliver — minute 50–60
+
+1. Re-read the exact PR head, required CI and existing merge authority.
+2. Merge to `dev` only inside that authority.
+3. Verify the designated dev deployment serves the expected revision.
+4. Exercise the changed behavior in dev and read back its observable result.
+5. Report success only when deployment and behavior read-back both pass before the deadline.
+
+Quick never merges to homolog or production. A separate human-controlled promotion may consume the already-proven dev result later.
+
+## Timeout and Failure
+
+At or before minute 60, when any success condition is absent:
+
+- stop automatically;
+- preserve the branch, commits, PR and evidence;
+- emit `quick-missed` with elapsed time, exact completed state and blocker;
+- return the demand to normal sizing/workflow;
+- do not continue, retry, discard work or claim partial delivery.
+
+A failed focused check, failed CI, wrong target, missing authority, deployment mismatch or failed read-back is a miss—not permission to lower the gate.
+
+## Output
+
+### Success
+
+```text
+quick-shipped
+Core:
+PR:
+CI:
+Dev:
+Elapsed:
+Flex cut:
+```
+
+### Refusal
+
+```text
+quick-refused
+Reason:
+Evidence:
+Route:
+Effects: none
+```
+
+### Miss
+
+```text
+quick-missed
+Elapsed: