Run APR (Automated Plan Reviser) workflow for FCP specification refinement. Use when asked to run APR, revision rounds, spec review, integrate GPT feedback, or harmonize docs...
This skill automates iterative specification refinement using GPT Pro 5.2 Extended Reasoning via Oracle.
Run next round (fully automated):
run apr round <N>
This will:
apr run <N> --wait to get GPT Pro feedbackRun continuous rounds:
keep running apr rounds starting from <N>
The Flywheel Connector Protocol (FCP) specification is refined through multiple rounds of GPT Pro review. Each round:
For headless/SSH environments, Oracle can delegate browser automation to a local machine.
# Install Oracle if needed
npm install -g @steipete/oracle
# Start server (keep this terminal open)
# IMPORTANT: Use port 9333 (not 9222) to avoid conflict with Chrome DevTools
oracle serve --port 9333 --token "flywheel-apr-2026"
# Add to shell config for persistence
echo 'export ORACLE_REMOTE_HOST="100.114.183.31:9333"' >> ~/.zshrc
echo 'export ORACLE_REMOTE_TOKEN="flywheel-apr-2026"' >> ~/.zshrc
source ~/.zshrc
# Test connection
oracle -p "test connection" -e browser -m "5.2 Pro"
Why port 9333? Oracle serve listens on this port for incoming requests. When it receives a request, it launches Chrome which uses port 9222 for DevTools Protocol. Using 9333 for the server avoids the port conflict.
Tailscale IPs for this setup:
100.114.183.31100.81.209.68100.91.120.17Important: Always run APR from the project directory:
cd /data/projects/flywheel_connectors
apr status # Check Oracle sessions
apr list # List workflows
apr history # Show revision history
apr dashboard # Interactive analytics
# Standard round (README + spec only)
apr run <N> --wait
# Include implementation doc (manual override)
apr run <N> --include-impl --wait
# With impl_every_n: 4 in workflow config, impl is auto-included on rounds 4, 8, 12...
# Preview without sending
apr run <N> --dry-run
# Render prompt for manual paste
apr run <N> --render --output /tmp/prompt.md
APR pastes document contents inline (not as file attachments). This is more reliable:
apr show <N> # View round output
apr diff <N> <M> # Compare two rounds
apr diff <N> # Compare round N vs N-1
When user requests a round, Claude Code performs these steps automatically:
apr run <N> --wait
.apr/rounds/fcp/round_<N>.mdFor each revision in the GPT Pro output:
Create logical commits:
Then push to remote.
If context compaction occurs, re-prime before continuing:
Reread AGENTS.md so it's still fresh in your mind. Also reread the entire
V2 spec so it's fresh before you read docs/fcp_model_connectors_rust.md.
| File | Purpose |
|---|---|
FCP_Specification_V2.md |
Main protocol specification (~145 KB) |
README.md |
Project overview and quick start (~44 KB) |
docs/fcp_model_connectors_rust.md |
Rust implementation guide (~70 KB) |
AGENTS.md |
Development rules and guidelines (~25 KB) |
.apr/rounds/fcp/round_N.md |
GPT Pro outputs for each round |
The APR workflow is configured in .apr/workflows/fcp.yaml:
.apr/rounds/fcp/impl_every_n: 4, rounds 4, 8, 12... auto-include implementationapr stats to see if changes are dampening# Check if Oracle server is running on local machine
# On local: oracle serve --port 9333 --token "..."
# Verify Tailscale connectivity
tailscale ping 100.114.183.31
# Test Oracle directly
oracle -p "test" -e browser -m "5.2 Pro" -v
# Verbose mode for debugging
apr run <N> -v
# Check workflow config
cat .apr/workflows/fcp.yaml
# Verify files exist
ls -la README.md FCP_Specification_V2.md docs/fcp_model_connectors_rust.md
# Clear stale lock
rm -f .apr/.locks/fcp_round_<N>.lock
| Round | Status | Key Changes |
|---|---|---|
| 1 | Complete | Initial refinements |
| 2 | Complete | sender_instance_id, ZoneRekeyPolicy, ApprovalToken, session nonces, GC mirroring, simulate, RoleObject, NetworkConstraints, WASI |
| 3 | Complete | RFC2119, Provenance MIN/MAX merge, SanitizerReceipt, basis points, KIDs, foreign_refs, FCPC framing, ResourceObject, RevocationFreshnessPolicy, fuzzing |
| 4 | Pending | - |