Set up PITER framework elements for AFK agent systems. Use when configuring prompt input sources, triggers, environments, and review processes for autonomous agent workflows.
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
Guide for setting up the PITER framework elements to enable AFK (Away From Keyboard) agent systems.
| Element | Question | Common Implementation |
|---|---|---|
| P | Where do tasks come from? | GitHub Issues |
| I | What type of work is this? | LLM Classification |
| T | When does work start? | Webhooks / Cron |
| E | Where do agents run? | Dedicated VM/Sandbox |
| R | How is work validated? | Pull Requests |
# Verify GitHub CLI is authenticated
gh auth status
# Test issue creation
gh issue create --title "Test Issue" --body "Testing ADW prompt input"
# Test issue fetching
gh issue view 1 --json title,body,labels
```text
Issue structure becomes the prompt:
```text
Title: Add user authentication
Body: We need OAuth with Google provider...
Labels: feature, priority-high
→ Becomes: "/feature Add user authentication..."
```markdown
### 2. Configure Classification (I)
Create `/classify-issue` command:
```markdown
# Issue Classification
Analyze the issue and respond with exactly one of:
- /chore - for maintenance, updates, cleanup
- /bug - for defects, errors, unexpected behavior
- /feature - for new functionality
## Issue
$ARGUMENTS
```text
Test classification:
```bash
claude -p "/classify-issue 'Fix login button not working'"
# Expected: /bug
claude -p "/classify-issue 'Update dependencies'"
# Expected: /chore
```markdown
### 3. Configure Trigger (T)
#### Option A: Cron Polling
```python
# trigger_cron.py (simplified)
import time
POLL_INTERVAL = 20 # seconds
while True:
issues = get_unprocessed_issues()
for issue in issues:
run_adw(issue.number)
time.sleep(POLL_INTERVAL)
```markdown
Unprocessed = no comments OR latest comment is "adw"
#### Option B: Webhook
```python
# trigger_webhook.py (simplified)
from flask import Flask, request
app = Flask(__name__)
@app.route("/gh-webhook", methods=["POST"])
def handle_webhook():
event = request.json
if is_new_issue(event):
run_adw(event["issue"]["number"])
return "OK"
```markdown
Webhook setup:
1. Set up tunnel (ngrok/cloudflare)
2. Configure webhook in GitHub repo settings
3. Select events: Issues, Issue comments
### 4. Configure Environment (E)
Environment checklist:
```bash
# Verify Claude Code
claude --version
# Verify API key
echo $ANTHROPIC_API_KEY | head -c 10
# Verify GitHub access
gh auth status
# Verify repository
git remote -v
# Test templates
claude -p "/chore test" --dry-run
```text
Create `.env` file (never commit):
```bash
ANTHROPIC_API_KEY=sk-ant-...
GITHUB_TOKEN=ghp_...
CLAUDE_CODE_PATH=claude
```markdown
### 5. Configure Review (R)
PR-based review:
```bash
# Test PR creation
gh pr create \
--title "Test PR" \
--body "Testing ADW review process" \
--base main \
--head feature-test
```markdown
Branch protection (recommended):
- Require pull request reviews
- Require status checks to pass
- Require linear history
## Validation Checklist
### Prompt Input (P)
- [ ] GitHub CLI authenticated
- [ ] Can create issues
- [ ] Can fetch issue details
- [ ] Issue format understood
### Classification (I)
- [ ] `/classify-issue` command works
- [ ] Correctly classifies chores
- [ ] Correctly classifies bugs
- [ ] Correctly classifies features
### Trigger (T)
- [ ] Trigger method chosen (cron/webhook)
- [ ] Trigger script running
- [ ] Events detected correctly
- [ ] ADW invoked on trigger
### Environment (E)
- [ ] Dedicated environment available
- [ ] API keys configured
- [ ] Claude Code accessible
- [ ] Templates tested
- [ ] Permissions configured
### Review (R)
- [ ] PR creation works
- [ ] Issue linking works
- [ ] Branch protection configured
- [ ] Review process documented
## Quick Test Workflow
```bash
# 1. Create test issue
gh issue create --title "Test: Update README" --body "Add installation section"
# 2. Manually run ADW
python adws/adw_plan_build.py <issue_number>
# 3. Verify PR created
gh pr list --state open
# 4. Review and close
gh pr view <pr_number>
```markdown
## Common Issues
### Authentication Failures
```bash
# Refresh GitHub auth
gh auth login
# Verify API key
curl -H "x-api-key: $ANTHROPIC_API_KEY" \
https://api.anthropic.com/v1/models
```markdown
### Webhook Not Receiving
- Check tunnel is running
- Verify webhook URL in GitHub settings
- Check webhook secret matches
- Look at GitHub webhook delivery logs
### Classification Accuracy
- Improve prompt with examples
- Add edge case handling
- Consider multi-label issues
## Related Memory Files
- @piter-framework.md - Full PITER reference
- @adw-anatomy.md - ADW structure
- @outloop-checklist.md - Deployment checklist