From upfront
The entry point. Use when starting a session — "what should I work on", "let's go", "start", or when describing a new idea. Checks project state and routes to the right skill.
How this skill is triggered — by the user, by Claude, or both
Slash command
/upfront:startThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the front door. Figure out where the user is and get them moving fast.
You are the front door. Figure out where the user is and get them moving fast.
Input: $ARGUMENTS
Check if a version check is needed. Read the cache file:
cat ~/.upfront/last-version-check 2>/dev/null
If the file exists and the timestamp inside is less than 6 hours old, skip the check entirely.
If the file is missing or stale, check for updates:
LATEST=$(curl -sf --max-time 3 https://api.github.com/repos/ThinkUpfront/Upfront/releases/latest | grep -o '"tag_name":"v[^"]*"' | sed 's/.*"v//' | sed 's/"//')
CURRENT=$(cat ~/.claude/plugins/cache/thinkupfront/upfront/*/.claude-plugin/plugin.json 2>/dev/null | grep -o '"version":"[^"]*"' | sed 's/.*"//')
mkdir -p ~/.upfront && date -u +%Y-%m-%dT%H:%M:%SZ > ~/.upfront/last-version-check
If $LATEST is newer than $CURRENT, mention it briefly before routing — don't block:
"Update available: Upfront $CURRENT → $LATEST. Run upfront update in your terminal when you get a chance."
If the check fails or times out, skip silently. Never block the user for a version check.
Silently check what exists:
specs/HANDOFF.md — was a session paused?specs/DEBT.md — any validated spikes waiting for solidification?specs/*-vision.md — any active visions with experiments?specs/*.md (not ARCHITECTURE/DECISIONS/LEARNINGS/DEBT/HANDOFF/TODO) — any feature specs without plans?specs/*-plan.md — any plans not yet built?specs/*-progress.md — any builds in progress?specs/TODO.md — any open items?Run git log --oneline -5 to see recent activity.
Something was paused. Say:
"You left off mid-session. Want to pick up where you stopped?"
If yes, immediately launch /upfront:resume. If no, continue to routing below.
Evaluate what they described:
Vague / exploratory ("I'm thinking about...", "maybe something like...", no clear problem): → "Sounds like you're still exploring. Let's sharpen the idea." → Launch /upfront:ideate
Big / multi-feature ("build me an app", "I want a platform", multiple concerns): → "This is bigger than one feature. Let's figure out what to test first." → Launch /upfront:vision
Clear idea, untested (specific problem, has a solution in mind, but hasn't tried it): → "Let's test this. Build the minimum, see if it works." → Launch /upfront:spike
Validated / confident (references a spike, has prior art, knows it works, ready to build properly): → "You know what you want. Let's build it right." → Launch /upfront:feature
Check project state and suggest the most logical next step. Respect the loop order: spike → learn → solidify → build.
Spike just completed (DEBT.md has a validated spike AND no retro in LEARNINGS.md referencing it): → "You validated a spike but haven't done the learn step yet. Let's review what you learned before deciding what's next." → Launch /upfront:increment
Validated spike exists, retro done (DEBT.md has status "validated", no corresponding feature spec, but retro exists): → "You have a validated spike: [description]. Ready to solidify it?" → Launch /upfront:feature
Feature spec exists without a plan: → "You have a spec ready: specs/[name].md. Ready to plan the build?" → Launch /upfront:plan
Plan exists, not yet built: → "You have a plan ready: specs/[name]-plan.md. Ready to build?" → Launch /upfront:build
Vision exists with a current experiment: → "Your vision has experiment [N] queued: [description]. Ready to spike it?" → Launch /upfront:spike
Build in progress (progress file exists): → "You have a build in progress." → Launch /upfront:build with the plan path
TODO has open items: → "You have [N] open items in TODO. Want to tackle one, or start something new?"
Nothing exists: → "Fresh start. What do you want to build?"
Then route based on their answer (same logic as the $ARGUMENTS path above).
npx claudepluginhub thinkupfront/upfront --plugin upfrontAssesses the current state of a startup project and recommends what to focus on next, both strategically and tactically.
Initializes projects: detects existing code, questions for requirements, researches via subagents, scopes needs, generates roadmap.
Reads project state and recommends the single next sensible step, anchored to concrete tasks and open questions. Read-only advisory output.