work-intake
npx skills add https://github.com/troykelly/codex-skills --skill work-intake
Agent 安装分布
Skill 文档
Work Intake
Overview
Every work request flows through intake. This skill determines scope, gathers requirements, and routes to the appropriate workflow.
Core principle: No work is too small to track, no work is too large to decompose.
Announce at start: “I’m using work-intake to understand and scope this request before beginning.”
The Intake Flow
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â REQUEST RECEIVED â
âââââââââââââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââââââââââ
â
â¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â STEP 0: PROJECT BOARD READINESS (GATE) â
â Is GITHUB_PROJECT_NUM set? â
â Is project board accessible? â
â Are required fields configured? â
âââââââââââââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââââââââââ
â
â¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â CLARIFYING QUESTIONS â
â What is the user trying to achieve? â
â What does success look like? â
â What constraints exist? â
âââââââââââââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââââââââââ
â
â¼
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â SCOPE ASSESSMENT â
â How much investigation is needed? â
â How many deliverables? â
â How many unknowns? â
âââââââââââââââââââââââââââââââ¬ââââââââââââââââââââââââââââââââââââââââ
â
âââââââââââââââââ¼ââââââââââââââââ¬ââââââââââââââââ
â¼ â¼ â¼ â¼
ââââââââââ ââââââââââââ ââââââââââââ ââââââââââââ
âTRIVIAL â â SMALL â â LARGE â â MASSIVE â
â â â â â â â â
â1 issue â â1-3 issuesâ â1 epic â âInitiativeâ
âno unkn.â âfew unkn. â âresearch â âmulti-epicâ
âââââ¬âââââ ââââââ¬ââââââ ââââââ¬ââââââ ââââââ¬ââââââ
â â â â
â¼ â¼ â¼ â¼
issue-prerequisite issue-prerequisite epic-management initiative-
+ project-board- + decomposition + research spikes architecture
enforcement + project-board- + project-board- + project-board-
enforcement enforcement enforcement
Step 0: Project Board Readiness (GATE)
Before any work intake, verify project board infrastructure is ready.
This is a gate. Do not proceed to clarifying questions until this passes.
# Derive defaults from GITHUB_PROJECT if provided
if [ -z "$GITHUB_PROJECT_NUM" ] && [ -n "$GITHUB_PROJECT" ]; then
NUM_CANDIDATE=$(echo "$GITHUB_PROJECT" | sed -E 's#.*/projects/([0-9]+).*#\1#')
if [ -n "$NUM_CANDIDATE" ] && [ "$NUM_CANDIDATE" != "$GITHUB_PROJECT" ]; then
export GITHUB_PROJECT_NUM="$NUM_CANDIDATE"
echo "Derived GITHUB_PROJECT_NUM=$GITHUB_PROJECT_NUM from GITHUB_PROJECT"
fi
fi
if [ -z "$GH_PROJECT_OWNER" ] && [ -n "$GITHUB_OWNER" ]; then
export GH_PROJECT_OWNER="$GITHUB_OWNER"
echo "Derived GH_PROJECT_OWNER=$GH_PROJECT_OWNER from GITHUB_OWNER"
fi
if [ -z "$GH_PROJECT_OWNER" ] && [ -n "$GITHUB_PROJECT" ]; then
OWNER_CANDIDATE=$(echo "$GITHUB_PROJECT" | sed -E 's#https://github.com/(orgs|users)/([^/]+)/projects/[0-9]+#\2#')
if [ -n "$OWNER_CANDIDATE" ] && [ "$OWNER_CANDIDATE" != "$GITHUB_PROJECT" ]; then
export GH_PROJECT_OWNER="$OWNER_CANDIDATE"
echo "Derived GH_PROJECT_OWNER=$GH_PROJECT_OWNER from GITHUB_PROJECT"
fi
fi
if [ -z "$GH_PROJECT_OWNER" ]; then
REMOTE_URL=$(git remote get-url origin 2>/dev/null || true)
OWNER_CANDIDATE=$(echo "$REMOTE_URL" | sed -E 's#(git@|https://)github.com[:/]+([^/]+)/[^/]+(\.git)?#\2#')
if [ -n "$OWNER_CANDIDATE" ] && [ "$OWNER_CANDIDATE" != "$REMOTE_URL" ]; then
export GH_PROJECT_OWNER="$OWNER_CANDIDATE"
echo "Derived GH_PROJECT_OWNER=$GH_PROJECT_OWNER from git remote"
fi
fi
# Verify environment variables are set
if [ -z "$GITHUB_PROJECT_NUM" ]; then
echo "BLOCKED: GITHUB_PROJECT_NUM not set"
echo "Set with: export GITHUB_PROJECT_NUM=<number>"
exit 1
fi
if [ -z "$GH_PROJECT_OWNER" ]; then
echo "BLOCKED: GH_PROJECT_OWNER not set"
echo "Set with: export GH_PROJECT_OWNER=@me # or org name"
exit 1
fi
# Verify project is accessible
if ! gh project view "$GITHUB_PROJECT_NUM" --owner "$GH_PROJECT_OWNER" --format json > /dev/null 2>&1; then
echo "BLOCKED: Cannot access project $GITHUB_PROJECT_NUM"
echo "Verify project exists and you have access"
exit 1
fi
# Verify required fields exist
FIELDS=$(gh project field-list "$GITHUB_PROJECT_NUM" --owner "$GH_PROJECT_OWNER" --format json | jq -r '.fields[].name')
for required in "Status" "Priority"; do
if ! echo "$FIELDS" | grep -q "^$required$"; then
echo "WARNING: Required field '$required' not found in project"
echo "Consider adding this field for full tracking support"
fi
done
if ! echo "$FIELDS" | grep -q "^Type$" && ! echo "$FIELDS" | grep -q "^Issue Type$"; then
echo "WARNING: Required field 'Type' (or 'Issue Type') not found in project"
echo "Consider adding this field for full tracking support"
fi
echo "Project board ready: $GITHUB_PROJECT_NUM"
If gate fails:
- Configure missing environment variables
- Create project board if needed
- Add required fields (Status, Type, Priority)
- Re-run readiness check
Skill: project-board-enforcement
Step 1: Clarifying Questions
Before scoping, understand the request.
Do not ask questions that can be answered from the repo. First inspect:
README.md,FEATURES.md,BRANDING.md,docs/, Storybook, and existing routes/pages- Existing GitHub issues and project board items
Only ask the user for information that is still missing after reviewing the repo.
Essential Questions
| Question | Purpose |
|---|---|
| “What are you trying to achieve?” | Understand the goal, not just the task |
| “What does success look like?” | Define acceptance criteria |
| “Who/what is affected?” | Identify scope of impact |
| “Are there constraints I should know about?” | Time, tech, compatibility |
| “Is this part of something larger?” | Link to existing initiatives |
Discovery Questions (for unclear requests)
| Question | Reveals |
|---|---|
| “Can you walk me through how this would be used?” | User journey, edge cases |
| “What exists today?” | Starting point, migration needs |
| “What have you already tried?” | Failed approaches, constraints |
| “Is there prior art or examples?” | Design direction |
Step 2: Scope Assessment
Evaluate the request against these criteria:
Scope Matrix
| Factor | Trivial | Small | Large | Massive |
|---|---|---|---|---|
| Unknowns | None | Few, answerable | Many, need research | Extensive, need spikes |
| Deliverables | 1 thing | 2-5 things | 6-20 things | 20+ things |
| Code areas | 1-2 files | 3-10 files | 10+ files | Multiple systems |
| Dependencies | None | Internal only | External services | New infrastructure |
| Duration | < 1 session | 1-3 sessions | 1-2 weeks | Weeks to months |
| Criteria | 1-2 | 3-5 | 6-15 | 15+ |
Scope Decision
IF unknowns == none AND deliverables <= 2:
â TRIVIAL: Use issue-prerequisite directly
IF unknowns == few AND deliverables <= 5:
â SMALL: Use issue-prerequisite, maybe issue-decomposition
IF unknowns == many OR deliverables > 5:
â LARGE: Use epic-management with research spikes
IF unknowns == extensive OR deliverables > 20 OR new_infrastructure:
â MASSIVE: Use initiative-architecture
Step 3: Route to Appropriate Workflow
Trivial Scope
**Assessment:** This is a trivial request (single deliverable, no unknowns).
**Next step:** Creating a single issue using `issue-prerequisite`.
Route to: issue-prerequisite
Small Scope
**Assessment:** This is a small request (few deliverables, minimal unknowns).
**Plan:**
1. Create parent issue for the request
2. If needed, decompose into 2-3 sub-issues
3. Begin implementation
**Next step:** Creating issue structure using `issue-prerequisite`.
Route to: issue-prerequisite â maybe issue-decomposition
Large Scope
**Assessment:** This is a large request requiring structured planning.
**Unknowns identified:**
- [ ] Unknown 1 - needs investigation
- [ ] Unknown 2 - needs research spike
**High-level deliverables:**
1. Deliverable A
2. Deliverable B
...
**Next step:** Creating epic structure using `epic-management`.
Route to: epic-management (which will create research spikes as needed)
Massive Scope
**Assessment:** This is a massive request requiring full initiative architecture.
**Why massive:**
- [Reason: extensive unknowns / new infrastructure / multi-system / etc.]
**Initial unknowns:**
- [ ] Does X exist?
- [ ] How does Y work?
- [ ] What are constraints of Z?
**Potential scope:**
- Multiple epics likely
- New capabilities needed
- Significant research required
**Next step:** Beginning initiative architecture using `initiative-architecture`.
Route to: initiative-architecture
Resumability Checkpoint
Before routing, document the intake in memory:
# Store intake assessment
mcp__memory__create_entities([{
"name": "Intake-[DATE]-[SHORT_DESC]",
"entityType": "WorkIntake",
"observations": [
"Request: [Original request]",
"Scope: [Trivial/Small/Large/Massive]",
"Unknowns: [List]",
"Route: [Target skill]",
"Status: [Routing/In Progress/Complete]"
]
}])
Examples
Example: Trivial
Request: “Make the login page button a little lighter.”
Intake:
- Goal: Adjust button color
- Success: Button is lighter
- Unknowns: None (CSS change)
- Deliverables: 1 (color change)
- Scope: TRIVIAL
â Route to issue-prerequisite
Example: Large
Request: “Add dark mode to the application.”
Intake:
- Goal: Theme switching capability
- Success: Users can toggle dark/light mode
- Unknowns:
- Current theming approach?
- Component library support?
- Persistence mechanism?
- Deliverables: ~10 (theme tokens, components, toggle, persistence, etc.)
- Scope: LARGE
â Route to epic-management
Example: Massive
Request: “Add the ability for users to log in by clicking on a popup in their phone.”
Intake:
- Goal: Mobile push notification login
- Success: User receives push, taps, logged in
- Unknowns:
- Is there a mobile app? â Research spike
- Push notification infrastructure? â Research spike
- Authentication flow design? â Research spike
- Security requirements? â Research spike
- Deliverables: 30+ (app work, backend, auth, notifications, etc.)
- Scope: MASSIVE
â Route to initiative-architecture
Red Flags That Indicate Larger Scope
Watch for these phrases that suggest the request is larger than it appears:
| Phrase | Likely Scope |
|---|---|
| “Just add…” + new capability | Large (new capability = infrastructure) |
| “Users should be able to…” | Large (user-facing = full stack) |
| “Integrate with…” | Large (external = API, auth, error handling) |
| “Like [other product]…” | Massive (feature parity = extensive) |
| “Mobile/app/notification” | Massive (unless app exists) |
| “Real-time/sync/live” | Large (infrastructure) |
Never Turn Away Work
No matter how massive the request:
- Acknowledge the goal – “I understand you want X”
- Explain the process – “This will require structured planning”
- Begin investigation – Start with what we don’t know
- Document everything – Every decision, every finding
- Break it down – Until we have tractable pieces
The path from “massive request” to “implementation” is:
Massive Request
â Initiative Architecture (document unknowns, create research spikes)
â Research Spikes (answer unknowns)
â Epic Structure (group deliverables)
â Issue Decomposition (create tractable tasks)
â Implementation (one issue at a time)
Checklist
- Project board readiness verified (Step 0 gate passed)
- GITHUB_PROJECT_NUM and GH_PROJECT_OWNER set
- Asked clarifying questions
- Understood the goal (not just the task)
- Identified unknowns
- Counted deliverables
- Assessed scope (Trivial/Small/Large/Massive)
- Documented intake in memory
- Routed to appropriate skill (with project-board-enforcement)
Skill: project-board-enforcement
Gate: Cannot proceed to any downstream skill without project board readiness verified.