Practitioner Tier¶
Hands-on tier
This tier requires the sandbox project and subagent delegation. Copy this directory into your project as .cursor/ to use the full pipeline.
This tier answers: Can you build and deploy AI features?
Like being able to drive anywhere safely -- you know the rules, you've practiced, and you can handle unexpected situations on the road.
Copy this directory into your project as .cursor/ to use the full pipeline.
cp -r .cursor-practitioner/* your-project/.cursor/
Learning objectives¶
After reading this, you will be able to: - Run the full pipeline on a real issue with testing, review, and failure handling - Understand how each agent contributes to the pipeline and what artifacts it produces - Extend the setup with new agents or rules for your team - Delegate work to subagents and orchestrate the full pipeline - Debug failures using the debugger/worker retry cycle
Cursor documentation¶
Key references for the concepts covered in this tier:
- Developing Features | Cursor Learn -- End-to-end feature development with agents
- Finding and Fixing Bugs | Cursor Learn -- Debug and diagnosis workflows
- Reviewing and Testing Code | Cursor Learn -- Code review patterns
- Putting It Together | Cursor Learn -- Combined pipeline workflows
- Custom Agents | Cursor Docs -- Agent definitions, AGENTS.md registry,
subagent_typedispatch - Rules | Cursor Docs --
.mdcrule files for pipeline behavior - Agent Skills | Cursor Docs --
SKILL.mdfor reusable agent capabilities
Quickstart¶
- Copy this directory into your project as
.cursor/ - Enable the models listed in
AGENTS.mdinCursor Settings > Models. Some models (e.g.gpt-5.1-codex-max) are hidden by default. See Models | Cursor Docs. - Create a GitHub issue with acceptance criteria
- Paste this into Cursor:
"Work on issue #[number]. Read the issue body and acceptance criteria. Plan the implementation, implement it, run tests, review the code, then create a branch, commit, and open a PR."
Artifacts appear under .pipeline/<issue-id>/ as each stage completes.
Pipeline flow¶
graph TD
A[jg-planner] --> B[jg-subplanner]
B -->|plan.json| C[jg-worker]
C -->|worker-result.json| D[jg-tester]
D -->|verdict: PASS| E[jg-reviewer]
D -->|verdict: FAIL| F[jg-debugger]
F -->|debug-diagnosis.json| C
E -->|verdict: PASS| G[jg-git]
E -->|verdict: FAIL| A
G -->|git-result.json| H[PR ready for review]
The planner orchestrates the full pipeline. On test failure, the debugger diagnoses the issue and the worker retries. On review failure, the planner re-routes. After 2 retries on any stage, the planner escalates to a human.
See Developing features for how the plan-then-implement pattern works in practice, and Putting it all together for an end-to-end walkthrough from the Cursor team.
Walkthrough¶
The walkthrough/ directory contains a complete traced example: "Add user authentication middleware" (issue #42). It demonstrates a realistic pipeline run where the tester catches a bug, the debugger diagnoses it, and the worker fixes it.
- Scenario -- Issue #42 description and acceptance criteria
- Narrative -- Step-by-step narration of the full pipeline run
The walkthrough includes: - A test failure (off-by-one in JWT expiry check) - Debugger diagnosis pointing to the exact file and line - Worker fix and successful retest - Reviewer approval with minor nits - PR creation with conventional commit
Exercises¶
Hands-on exercises to build and extend the pipeline:
| # | Exercise |
|---|---|
| 01 | Setup Project |
| 02 | Plan a Feature |
| 03 | Implement Feature |
| 04 | Debug Failure |
| 05 | Review and Ship |
| 06 | Extend Pipeline |
| 07 | Author a Rule |
| 08 | Build a Skill |
| 09 | Understand Benchmarker |
| 10 | Resume Pipeline |
| 11 | Pipeline Observability |
Agents¶
| Agent | Role | Model | Reads | Writes |
|---|---|---|---|---|
| jg-planner | Orchestrates pipeline, routes failures | gemini-3.1-pro | All artifacts (read-only) | state.yaml |
| jg-subplanner | Decomposes issue into ordered steps | gpt-5.1-codex-max | Issue body | plan.json |
| jg-worker | Implements code and tests | gpt-5.3-codex | plan.json, debug-diagnosis.json | worker-result.json |
| jg-tester | Two-phase verification | gemini-3-flash | (runs commands) | test-result.json |
| jg-reviewer | Quality gate for scope and correctness | gemini-3.1-pro | plan.json, worker-result.json | review-result.json |
| jg-debugger | Diagnoses test failures | claude-4.6-sonnet | test-result.json, plan.json | debug-diagnosis.json |
| jg-git | Branch, commit, PR | gemini-3-flash | (git state) | git-result.json |
| jg-benchmarker | Model cost/performance evaluation | gemini-3-flash | Benchmark sources | Snapshot files |
jg-benchmarker is on-demand, not a pipeline stage.
Failure and retry walkthrough¶
Each artifact file in walkthrough/ is a realistic example of what that agent produces. You can validate them:
# In the training repo:
python .cursor-practitioner/pipeline/schema.py --validate docs/practitioner/walkthrough/plan.json
# In your own project (after copying the bundle as .cursor/):
# python .cursor/pipeline/schema.py --validate .pipeline/<issue-id>/plan.json
See Finding and fixing bugs for more on how agents handle failures.
Extending the setup¶
Add a new agent (worked example: team-linter)¶
Suppose your team wants a dedicated linter agent that runs after the worker and before the tester, writing lint-result.json.
- Copy the template and fill it in
- Copy
templates/agent.mdtoagents/team-linter.md - Set
name: team-linter,model: gemini-3-flash, and a one-linedescription(e.g. "Runs project linter and writes result; use when verifying code style before tests.") -
In the body: ROLE (runs linter, writes result), CORE RESPONSIBILITIES (read plan/worker-result, run
npm run lintor project equivalent, write.pipeline/<issue-id>/lint-result.jsonwithverdict,output), NON-GOALS, and the artifact filename in OUTPUT. -
Add the agent to AGENTS.md
- Add one row to the main table in the same format as the existing rows:
| **team-linter** | gemini-3-flash | Run linter before tests | plan.json, worker-result.json | lint-result.json |- Add a line to the Pipeline order section (e.g. "2.5. team-linter — After worker; writes
lint-result.json. On FAIL → planner re-dispatches worker or escalates.") -
In Subagent types, add
linter→ team-linter. -
Wire it into the planner
- Edit
agents/jg-planner.md. In CORE RESPONSIBILITIES, insert the new stage in the happy path (e.g. after "Worker reports completion" and before "invoke tester": "Worker reports completion -> invoke team-linter; Linter PASS -> invoke tester"). - In PIPELINE ARTIFACTS, add:
Lint result: .pipeline/<issue-id>/lint-result.json. -
If you add a new artifact type, add its required fields to
pipeline/README.mdand topipeline/schema.pyin theREQUIREDdict. -
Optional: Add
lint-result.jsonto the pipeline skill and tocheck.pyif you want stage-gate checks for the lint stage.
Add a new rule¶
- Copy
templates/rule.mdc - Set
description(this is how Cursor decides when to apply it) andalwaysApply - Write the rule body
See Customizing agents for more on tailoring agents and rules.
Project customization: language- or stack-specific rules¶
Use team-* rules to tell agents how to run tests, lint, and typecheck in your project. Examples:
- Node/TypeScript — Create
rules/team-node-conventions.mdcwithdescription: Node/TS project conventionsand body that specifies: "Tests: runnpm test. Lint:npm run lint. Typecheck:npm run typecheck. Use the project'spackage.jsonscripts; do not assume global installs." - Python — Create
rules/team-python-conventions.mdcwith body: "Tests:pytest(ormake testif the project uses it). Lint:ruff checkorflake8. Typecheck:pyrightormypy. Activate the project venv before running commands when one is present." - Monorepo — Create
rules/team-monorepo.mdcthat describes which packages are affected by a change and how to run commands per package (e.g.pnpm --filter <pkg> test).
These rules are picked up by the planner and by the tester so that "run tests" and "run lint" use the right commands without editing jg- files.
Naming conventions¶
jg-*files are shared upstream — don't modify them in your project- Name team additions
<team>-*(e.g.acme-api-standards.mdc,team-linter.md) - Name personal additions without prefix
What changed from Foundation¶
| Addition | What it does |
|---|---|
| jg-subplanner | Decomposes complex issues into ordered steps with file-level granularity before the worker starts |
| jg-tester | Two-phase verification: Phase 1 (lint, typecheck, unit tests), Phase 2 (integration, E2E). See Reviewing and testing code |
| jg-reviewer | Quality gate that catches scope creep, overengineering, and convention violations |
| jg-debugger | Classifies failures as fix_target (worker can fix), plan_defect (need to re-plan), or escalate (human needed) |
| Skills | Reusable instruction sets (jg-pipeline-artifact-io for artifact I/O, jg-benchmark-ops for model evaluation). See Cursor docs: Skills |
| Pipeline validation | schema.py validates artifact structure, check.py validates stage-gate invariants |
| Templates | Starting points for new agents, rules, and artifact examples |
Model fallbacks¶
| Agent | Default model | Fallback |
|---|---|---|
| jg-planner | gemini-3.1-pro | Any reasoning model |
| jg-subplanner | gpt-5.1-codex-max | Any code-capable model |
| jg-worker | gpt-5.3-codex | Any code-capable model |
| jg-tester | gemini-3-flash | Any fast model |
| jg-reviewer | gemini-3.1-pro | Any reasoning model |
| jg-debugger | claude-4.6-sonnet | Any reasoning model |
| jg-git | gemini-3-flash | Any fast model |
| jg-benchmarker | gemini-3-flash | Any fast model |
If a model isn't available, substitute and expect more retries from cheaper models.
Troubleshooting¶
Tester failed but the code looks correct
Check that test commands match your project (e.g. make test vs npm test vs pytest). The tester runs whatever commands are configured.
Debugger classified as "escalate"
The failure is beyond agent capability. Review the debug-diagnosis.json manually and fix the issue.
Reviewer keeps failing on scope
Check that plan.json affected_files matches what the worker actually changed. Scope drift causes review failures.
Agent didn't pick up a rule
Verify the rule file is in .cursor/rules/, has valid frontmatter, and the description accurately describes when it should apply.
Pipeline artifacts not appearing
Check .pipeline/<issue-id>/ exists. The planner creates this directory at the start of a run.
Claude Code¶
Pipeline concepts (artifacts, agent roles, stage gates) are IDE-agnostic:
| What | Location |
|---|---|
| Rules | .cursor/rules/*.mdc |
| Agents | .cursor/agents/*.md |
| Skills | .cursor/skills/*/SKILL.md |
| Subagent dispatch | subagent_type via Task tool |
| What | Location |
|---|---|
| Rules | CLAUDE.md at repo root |
| Agents | Referenced docs in CLAUDE.md |
| Skills | .claude/commands/*.md |
| Subagent dispatch | Sequential prompting through stages |
Walkthrough content and pipeline artifacts work in both environments.
Cost¶
A typical pipeline run invokes 4-6 agents. Each agent call is a separate AI model invocation. For cost-optimized model selection across agents, see the Expert tier's tiered routing approach.
Maintenance¶
The .cursor-practitioner/README.md is the copy-safe bundle README (what ships when you copy the tier into a project). This docs page is the canonical course material.
Portfolio¶
Complete 1 deployed AI use case by working through exercises 01-05. You will have implemented, tested, debugged, reviewed, and shipped a feature using the full multi-agent pipeline.
Assessment¶
Technical demo + walk-through with an Expert. Walk through your deployed feature, show the pipeline artifacts, explain how you handled the test failure, and demonstrate the team-linter extension.
Next steps¶
To add tiered model routing (fast/standard/high agents), cost tracking, and multi-issue orchestration, see Expert.