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:
2026-03-27 08:03:18 -04:00
commit 17e5eb707f
29 changed files with 2546 additions and 0 deletions

View 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" -->

View 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
}
]
}

View 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. -->

View 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 -->