feat: agent loop harness with Claude Code plugin support
Generator-evaluator architecture with iterative context-reset for long-running coding tasks. Ships as a Claude Code plugin — install with /plugin and use /agent-loop:init, /agent-loop:plan, /agent-loop:run.
This commit is contained in:
35
templates/contract.md.template
Normal file
35
templates/contract.md.template
Normal file
@@ -0,0 +1,35 @@
|
||||
# Sprint Contract: {{STORY_ID}} — {{STORY_TITLE}}
|
||||
|
||||
## What Will Be Built
|
||||
|
||||
<!-- Concrete description of the deliverable -->
|
||||
|
||||
## Done Conditions
|
||||
|
||||
- [ ] <!-- Specific, testable condition -->
|
||||
- [ ] <!-- Another condition -->
|
||||
- [ ] All acceptance criteria from prd.json met
|
||||
- [ ] Quality gates pass (typecheck, lint, test)
|
||||
|
||||
## Evaluation Criteria
|
||||
|
||||
What the evaluator will specifically check:
|
||||
- [ ] <!-- Specific verification step -->
|
||||
- [ ] <!-- Another verification step -->
|
||||
- [ ] No regressions in existing functionality
|
||||
|
||||
## Out of Scope
|
||||
|
||||
Things explicitly NOT part of this story:
|
||||
- <!-- Thing 1 -->
|
||||
- <!-- Thing 2 -->
|
||||
|
||||
## Key Files
|
||||
|
||||
Files likely to be created or modified:
|
||||
- <!-- path/to/file.ext — what changes -->
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Depends on: <!-- story IDs or "none" -->
|
||||
- Blocks: <!-- story IDs or "none" -->
|
||||
54
templates/prd.json.example
Normal file
54
templates/prd.json.example
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"project": "MyApp",
|
||||
"branchName": "loop/add-user-auth",
|
||||
"description": "Add user authentication with OAuth providers",
|
||||
"userStories": [
|
||||
{
|
||||
"id": "US-001",
|
||||
"title": "Add users table with OAuth fields",
|
||||
"description": "As a developer, I need a users table that stores OAuth provider info so we can persist authenticated users.",
|
||||
"acceptanceCriteria": [
|
||||
"Create users table with id, email, name, oauth_provider, oauth_id, created_at columns",
|
||||
"Generate and run migration successfully",
|
||||
"Typecheck passes",
|
||||
"Unit test for model creation passes"
|
||||
],
|
||||
"priority": 1,
|
||||
"passes": false,
|
||||
"notes": "",
|
||||
"rejections": 0
|
||||
},
|
||||
{
|
||||
"id": "US-002",
|
||||
"title": "Implement OAuth callback endpoint",
|
||||
"description": "As a user, I want to sign in with Google so I can access my account without creating a password.",
|
||||
"acceptanceCriteria": [
|
||||
"GET /auth/callback accepts OAuth authorization code",
|
||||
"Exchanges code for access token with provider",
|
||||
"Creates or updates user record",
|
||||
"Returns JWT session token",
|
||||
"Typecheck passes",
|
||||
"Integration test for OAuth flow passes"
|
||||
],
|
||||
"priority": 2,
|
||||
"passes": false,
|
||||
"notes": "",
|
||||
"rejections": 0
|
||||
},
|
||||
{
|
||||
"id": "US-003",
|
||||
"title": "Add login page with OAuth button",
|
||||
"description": "As a user, I want a login page with a 'Sign in with Google' button so I can authenticate.",
|
||||
"acceptanceCriteria": [
|
||||
"Login page renders with OAuth button",
|
||||
"Button redirects to provider authorization URL",
|
||||
"Typecheck passes",
|
||||
"Verify UI renders correctly in browser"
|
||||
],
|
||||
"priority": 3,
|
||||
"passes": false,
|
||||
"notes": "",
|
||||
"rejections": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
13
templates/progress.md.template
Normal file
13
templates/progress.md.template
Normal file
@@ -0,0 +1,13 @@
|
||||
# Progress
|
||||
|
||||
## Codebase Patterns
|
||||
|
||||
<!-- Consolidate reusable patterns discovered across iterations here.
|
||||
This section is READ FIRST by every new iteration.
|
||||
Keep it concise — patterns only, not implementation details. -->
|
||||
|
||||
---
|
||||
|
||||
## Session Log
|
||||
|
||||
<!-- Each iteration appends a progress entry below. Never delete entries. -->
|
||||
29
templates/triage-brief.md.template
Normal file
29
templates/triage-brief.md.template
Normal file
@@ -0,0 +1,29 @@
|
||||
# Triage Brief
|
||||
|
||||
Generated: <!-- insert current date and time -->
|
||||
Mode: <!-- insert mode from config.json -->
|
||||
Iterations completed: <!-- insert completed count --> of <!-- insert max iterations -->
|
||||
|
||||
## Status
|
||||
|
||||
Stories: <!-- insert completed count --> of <!-- insert total count --> complete
|
||||
|
||||
| ID | Title | Status | Rejections |
|
||||
|----|-------|--------|------------|
|
||||
<!-- Populated by /loop-triage skill -->
|
||||
|
||||
## Key Findings
|
||||
|
||||
<!-- Consolidated from progress.md session log -->
|
||||
|
||||
## Blockers
|
||||
|
||||
<!-- Stories that failed repeatedly or hit retry limits -->
|
||||
|
||||
## Recommended Next Steps
|
||||
|
||||
<!-- What a human should do next -->
|
||||
|
||||
## Files of Interest
|
||||
|
||||
<!-- Key files discovered or modified, with context -->
|
||||
Reference in New Issue
Block a user