@fro.bot/systematic 1.18.7 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/agents/docs/ankane-readme-writer.md +67 -0
  2. package/agents/review/julik-frontend-races-reviewer.md +223 -0
  3. package/agents/review/kieran-python-reviewer.md +135 -0
  4. package/agents/review/schema-drift-detector.md +156 -0
  5. package/agents/workflow/every-style-editor.md +66 -0
  6. package/commands/agent-native-audit.md +4 -2
  7. package/commands/changelog.md +139 -0
  8. package/commands/create-agent-skill.md +5 -2
  9. package/commands/deepen-plan.md +50 -20
  10. package/commands/deploy-docs.md +120 -0
  11. package/commands/feature-video.md +352 -0
  12. package/commands/generate_command.md +164 -0
  13. package/commands/heal-skill.md +149 -0
  14. package/commands/lfg.md +14 -8
  15. package/commands/report-bug.md +151 -0
  16. package/commands/reproduce-bug.md +100 -0
  17. package/commands/resolve_parallel.md +36 -0
  18. package/commands/resolve_todo_parallel.md +37 -0
  19. package/commands/slfg.md +33 -0
  20. package/commands/test-browser.md +340 -0
  21. package/commands/test-xcode.md +333 -0
  22. package/commands/triage.md +311 -0
  23. package/commands/workflows/brainstorm.md +6 -1
  24. package/commands/workflows/compound.md +16 -13
  25. package/commands/workflows/plan.md +49 -1
  26. package/commands/workflows/review.md +28 -24
  27. package/commands/workflows/work.md +60 -25
  28. package/package.json +1 -1
  29. package/skills/andrew-kane-gem-writer/SKILL.md +185 -0
  30. package/skills/andrew-kane-gem-writer/references/database-adapters.md +231 -0
  31. package/skills/andrew-kane-gem-writer/references/module-organization.md +121 -0
  32. package/skills/andrew-kane-gem-writer/references/rails-integration.md +183 -0
  33. package/skills/andrew-kane-gem-writer/references/resources.md +119 -0
  34. package/skills/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
  35. package/skills/dhh-rails-style/SKILL.md +186 -0
  36. package/skills/dhh-rails-style/references/architecture.md +653 -0
  37. package/skills/dhh-rails-style/references/controllers.md +303 -0
  38. package/skills/dhh-rails-style/references/frontend.md +510 -0
  39. package/skills/dhh-rails-style/references/gems.md +266 -0
  40. package/skills/dhh-rails-style/references/models.md +359 -0
  41. package/skills/dhh-rails-style/references/testing.md +338 -0
  42. package/skills/dspy-ruby/SKILL.md +738 -0
  43. package/skills/dspy-ruby/assets/config-template.rb +187 -0
  44. package/skills/dspy-ruby/assets/module-template.rb +300 -0
  45. package/skills/dspy-ruby/assets/signature-template.rb +221 -0
  46. package/skills/dspy-ruby/references/core-concepts.md +674 -0
  47. package/skills/dspy-ruby/references/observability.md +366 -0
  48. package/skills/dspy-ruby/references/optimization.md +603 -0
  49. package/skills/dspy-ruby/references/providers.md +418 -0
  50. package/skills/dspy-ruby/references/toolsets.md +502 -0
  51. package/skills/every-style-editor/SKILL.md +135 -0
  52. package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
  53. package/skills/gemini-imagegen/SKILL.md +238 -0
  54. package/skills/gemini-imagegen/requirements.txt +2 -0
  55. package/skills/gemini-imagegen/scripts/compose_images.py +157 -0
  56. package/skills/gemini-imagegen/scripts/edit_image.py +144 -0
  57. package/skills/gemini-imagegen/scripts/gemini_images.py +263 -0
  58. package/skills/gemini-imagegen/scripts/generate_image.py +133 -0
  59. package/skills/gemini-imagegen/scripts/multi_turn_chat.py +216 -0
  60. package/skills/rclone/SKILL.md +151 -0
  61. package/skills/rclone/scripts/check_setup.sh +60 -0
  62. package/skills/resolve-pr-parallel/SKILL.md +90 -0
  63. package/skills/resolve-pr-parallel/scripts/get-pr-comments +68 -0
  64. package/skills/resolve-pr-parallel/scripts/resolve-pr-thread +23 -0
  65. package/skills/setup/SKILL.md +168 -0
  66. package/skills/skill-creator/SKILL.md +211 -0
  67. package/skills/skill-creator/scripts/init_skill.py +303 -0
  68. package/skills/skill-creator/scripts/package_skill.py +110 -0
  69. package/skills/skill-creator/scripts/quick_validate.py +65 -0
@@ -0,0 +1,151 @@
1
+ ---
2
+ name: rclone
3
+ description: Upload, sync, and manage files across cloud storage providers using rclone. Use when uploading files (images, videos, documents) to S3, Cloudflare R2, Backblaze B2, Google Drive, Dropbox, or any S3-compatible storage. Triggers on "upload to S3", "sync to cloud", "rclone", "backup files", "upload video/image to bucket", or requests to transfer files to remote storage.
4
+ ---
5
+
6
+ # rclone File Transfer Skill
7
+
8
+ ## Setup Check (Always Run First)
9
+
10
+ Before any rclone operation, verify installation and configuration:
11
+
12
+ ```bash
13
+ # Check if rclone is installed
14
+ command -v rclone >/dev/null 2>&1 && echo "rclone installed: $(rclone version | head -1)" || echo "NOT INSTALLED"
15
+
16
+ # List configured remotes
17
+ rclone listremotes 2>/dev/null || echo "NO REMOTES CONFIGURED"
18
+ ```
19
+
20
+ ### If rclone is NOT installed
21
+
22
+ Guide the user to install:
23
+
24
+ ```bash
25
+ # macOS
26
+ brew install rclone
27
+
28
+ # Linux (script install)
29
+ curl https://rclone.org/install.sh | sudo bash
30
+
31
+ # Or via package manager
32
+ sudo apt install rclone # Debian/Ubuntu
33
+ sudo dnf install rclone # Fedora
34
+ ```
35
+
36
+ ### If NO remotes are configured
37
+
38
+ Walk the user through interactive configuration:
39
+
40
+ ```bash
41
+ rclone config
42
+ ```
43
+
44
+ **Common provider setup quick reference:**
45
+
46
+ | Provider | Type | Key Settings |
47
+ |----------|------|--------------|
48
+ | AWS S3 | `s3` | access_key_id, secret_access_key, region |
49
+ | Cloudflare R2 | `s3` | access_key_id, secret_access_key, endpoint (account_id.r2.cloudflarestorage.com) |
50
+ | Backblaze B2 | `b2` | account (keyID), key (applicationKey) |
51
+ | DigitalOcean Spaces | `s3` | access_key_id, secret_access_key, endpoint (region.digitaloceanspaces.com) |
52
+ | Google Drive | `drive` | OAuth flow (opens browser) |
53
+ | Dropbox | `dropbox` | OAuth flow (opens browser) |
54
+
55
+ **Example: Configure Cloudflare R2**
56
+ ```bash
57
+ rclone config create r2 s3 \
58
+ provider=Cloudflare \
59
+ access_key_id=YOUR_ACCESS_KEY \
60
+ secret_access_key=YOUR_SECRET_KEY \
61
+ endpoint=ACCOUNT_ID.r2.cloudflarestorage.com \
62
+ acl=private
63
+ ```
64
+
65
+ **Example: Configure AWS S3**
66
+ ```bash
67
+ rclone config create aws s3 \
68
+ provider=AWS \
69
+ access_key_id=YOUR_ACCESS_KEY \
70
+ secret_access_key=YOUR_SECRET_KEY \
71
+ region=us-east-1
72
+ ```
73
+
74
+ ## Common Operations
75
+
76
+ ### Upload single file
77
+ ```bash
78
+ rclone copy /path/to/file.mp4 remote:bucket/path/ --progress
79
+ ```
80
+
81
+ ### Upload directory
82
+ ```bash
83
+ rclone copy /path/to/folder remote:bucket/folder/ --progress
84
+ ```
85
+
86
+ ### Sync directory (mirror, deletes removed files)
87
+ ```bash
88
+ rclone sync /local/path remote:bucket/path/ --progress
89
+ ```
90
+
91
+ ### List remote contents
92
+ ```bash
93
+ rclone ls remote:bucket/
94
+ rclone lsd remote:bucket/ # directories only
95
+ ```
96
+
97
+ ### Check what would be transferred (dry run)
98
+ ```bash
99
+ rclone copy /path remote:bucket/ --dry-run
100
+ ```
101
+
102
+ ## Useful Flags
103
+
104
+ | Flag | Purpose |
105
+ |------|---------|
106
+ | `--progress` | Show transfer progress |
107
+ | `--dry-run` | Preview without transferring |
108
+ | `-v` | Verbose output |
109
+ | `--transfers=N` | Parallel transfers (default 4) |
110
+ | `--bwlimit=RATE` | Bandwidth limit (e.g., `10M`) |
111
+ | `--checksum` | Compare by checksum, not size/time |
112
+ | `--exclude="*.tmp"` | Exclude patterns |
113
+ | `--include="*.mp4"` | Include only matching |
114
+ | `--min-size=SIZE` | Skip files smaller than SIZE |
115
+ | `--max-size=SIZE` | Skip files larger than SIZE |
116
+
117
+ ## Large File Uploads
118
+
119
+ For videos and large files, use chunked uploads:
120
+
121
+ ```bash
122
+ # S3 multipart upload (automatic for >200MB)
123
+ rclone copy large_video.mp4 remote:bucket/ --s3-chunk-size=64M --progress
124
+
125
+ # Resume interrupted transfers
126
+ rclone copy /path remote:bucket/ --progress --retries=5
127
+ ```
128
+
129
+ ## Verify Upload
130
+
131
+ ```bash
132
+ # Check file exists and matches
133
+ rclone check /local/file remote:bucket/file
134
+
135
+ # Get file info
136
+ rclone lsl remote:bucket/path/to/file
137
+ ```
138
+
139
+ ## Troubleshooting
140
+
141
+ ```bash
142
+ # Test connection
143
+ rclone lsd remote:
144
+
145
+ # Debug connection issues
146
+ rclone lsd remote: -vv
147
+
148
+ # Check config
149
+ rclone config show remote
150
+ ```
151
+
@@ -0,0 +1,60 @@
1
+ #!/bin/bash
2
+ # rclone setup checker - verifies installation and configuration
3
+
4
+ set -e
5
+
6
+ echo "=== rclone Setup Check ==="
7
+ echo
8
+
9
+ # Check if rclone is installed
10
+ if command -v rclone >/dev/null 2>&1; then
11
+ echo "✓ rclone installed"
12
+ rclone version | head -1
13
+ echo
14
+ else
15
+ echo "✗ rclone NOT INSTALLED"
16
+ echo
17
+ echo "Install with:"
18
+ echo " macOS: brew install rclone"
19
+ echo " Linux: curl https://rclone.org/install.sh | sudo bash"
20
+ echo " or: sudo apt install rclone"
21
+ exit 1
22
+ fi
23
+
24
+ # Check for configured remotes
25
+ REMOTES=$(rclone listremotes 2>/dev/null || true)
26
+
27
+ if [ -z "$REMOTES" ]; then
28
+ echo "✗ No remotes configured"
29
+ echo
30
+ echo "Run 'rclone config' to set up a remote, or use:"
31
+ echo
32
+ echo " # Cloudflare R2"
33
+ echo " rclone config create r2 s3 provider=Cloudflare \\"
34
+ echo " access_key_id=KEY secret_access_key=SECRET \\"
35
+ echo " endpoint=ACCOUNT_ID.r2.cloudflarestorage.com"
36
+ echo
37
+ echo " # AWS S3"
38
+ echo " rclone config create aws s3 provider=AWS \\"
39
+ echo " access_key_id=KEY secret_access_key=SECRET region=us-east-1"
40
+ echo
41
+ exit 1
42
+ else
43
+ echo "✓ Configured remotes:"
44
+ echo "$REMOTES" | sed 's/^/ /'
45
+ echo
46
+ fi
47
+
48
+ # Test connectivity for each remote
49
+ echo "Testing remote connectivity..."
50
+ for remote in $REMOTES; do
51
+ remote_name="${remote%:}"
52
+ if rclone lsd "$remote" >/dev/null 2>&1; then
53
+ echo " ✓ $remote_name - connected"
54
+ else
55
+ echo " ✗ $remote_name - connection failed (check credentials)"
56
+ fi
57
+ done
58
+
59
+ echo
60
+ echo "=== Setup Complete ==="
@@ -0,0 +1,90 @@
1
+ ---
2
+ name: resolve_pr_parallel
3
+ description: Resolve all PR comments using parallel processing. Use when addressing PR review feedback, resolving review threads, or batch-fixing PR comments.
4
+ argument-hint: '[optional: PR number or current PR]'
5
+ disable-model-invocation: true
6
+ allowed-tools: Bash(gh *), Bash(git *), Read
7
+ ---
8
+
9
+ # Resolve PR Comments in Parallel
10
+
11
+ Resolve all unresolved PR review comments by spawning parallel agents for each thread.
12
+
13
+ ## Context Detection
14
+
15
+ OpenCode automatically detects git context:
16
+ - Current branch and associated PR
17
+ - All PR comments and review threads
18
+ - Works with any PR by specifying the number
19
+
20
+ ## Workflow
21
+
22
+ ### 1. Analyze
23
+
24
+ Fetch unresolved review threads using the GraphQL script:
25
+
26
+ ```bash
27
+ bash ${OPENCODE_PLUGIN_ROOT}/skills/resolve-pr-parallel/scripts/get-pr-comments PR_NUMBER
28
+ ```
29
+
30
+ This returns only **unresolved, non-outdated** threads with file paths, line numbers, and comment bodies.
31
+
32
+ If the script fails, fall back to:
33
+ ```bash
34
+ gh pr view PR_NUMBER --json reviews,comments
35
+ gh api repos/{owner}/{repo}/pulls/PR_NUMBER/comments
36
+ ```
37
+
38
+ ### 2. Plan
39
+
40
+ Create a todowrite list of all unresolved items grouped by type:
41
+ - Code changes requested
42
+ - Questions to answer
43
+ - Style/convention fixes
44
+ - Test additions needed
45
+
46
+ ### 3. Implement (PARALLEL)
47
+
48
+ Spawn a `pr-comment-resolver` agent for each unresolved item in parallel.
49
+
50
+ If there are 3 comments, spawn 3 agents:
51
+
52
+ 1. task pr-comment-resolver(comment1)
53
+ 2. task pr-comment-resolver(comment2)
54
+ 3. task pr-comment-resolver(comment3)
55
+
56
+ Always run all in parallel subagents/Tasks for each Todo item.
57
+
58
+ ### 4. Commit & Resolve
59
+
60
+ - Commit changes with a clear message referencing the PR feedback
61
+ - Resolve each thread programmatically:
62
+
63
+ ```bash
64
+ bash ${OPENCODE_PLUGIN_ROOT}/skills/resolve-pr-parallel/scripts/resolve-pr-thread THREAD_ID
65
+ ```
66
+
67
+ - Push to remote
68
+
69
+ ### 5. Verify
70
+
71
+ Re-fetch comments to confirm all threads are resolved:
72
+
73
+ ```bash
74
+ bash ${OPENCODE_PLUGIN_ROOT}/skills/resolve-pr-parallel/scripts/get-pr-comments PR_NUMBER
75
+ ```
76
+
77
+ Should return an empty array `[]`. If threads remain, repeat from step 1.
78
+
79
+ ## Scripts
80
+
81
+ - [scripts/get-pr-comments](scripts/get-pr-comments) - GraphQL query for unresolved review threads
82
+ - [scripts/resolve-pr-thread](scripts/resolve-pr-thread) - GraphQL mutation to resolve a thread by ID
83
+
84
+ ## Success Criteria
85
+
86
+ - All unresolved review threads addressed
87
+ - Changes committed and pushed
88
+ - Threads resolved via GraphQL (marked as resolved on GitHub)
89
+ - Empty result from get-pr-comments on verify
90
+
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ if [ $# -lt 1 ]; then
6
+ echo "Usage: get-pr-comments PR_NUMBER [OWNER/REPO]"
7
+ echo "Example: get-pr-comments 123"
8
+ echo "Example: get-pr-comments 123 owner/repo"
9
+ exit 1
10
+ fi
11
+
12
+ PR_NUMBER=$1
13
+
14
+ if [ -n "$2" ]; then
15
+ OWNER=$(echo "$2" | cut -d/ -f1)
16
+ REPO=$(echo "$2" | cut -d/ -f2)
17
+ else
18
+ OWNER=$(gh repo view --json owner -q .owner.login 2>/dev/null)
19
+ REPO=$(gh repo view --json name -q .name 2>/dev/null)
20
+ fi
21
+
22
+ if [ -z "$OWNER" ] || [ -z "$REPO" ]; then
23
+ echo "Error: Could not detect repository. Pass OWNER/REPO as second argument."
24
+ exit 1
25
+ fi
26
+
27
+ gh api graphql -f owner="$OWNER" -f repo="$REPO" -F pr="$PR_NUMBER" -f query='
28
+ query FetchUnresolvedComments($owner: String!, $repo: String!, $pr: Int!) {
29
+ repository(owner: $owner, name: $repo) {
30
+ pullRequest(number: $pr) {
31
+ title
32
+ url
33
+ reviewThreads(first: 100) {
34
+ totalCount
35
+ edges {
36
+ node {
37
+ id
38
+ isResolved
39
+ isOutdated
40
+ isCollapsed
41
+ path
42
+ line
43
+ startLine
44
+ diffSide
45
+ comments(first: 100) {
46
+ totalCount
47
+ nodes {
48
+ id
49
+ author {
50
+ login
51
+ }
52
+ body
53
+ createdAt
54
+ updatedAt
55
+ url
56
+ outdated
57
+ }
58
+ }
59
+ }
60
+ }
61
+ pageInfo {
62
+ hasNextPage
63
+ endCursor
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }' | jq '.data.repository.pullRequest.reviewThreads.edges | map(select(.node.isResolved == false and .node.isOutdated == false))'
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ if [ $# -eq 0 ]; then
6
+ echo "Usage: resolve-pr-thread THREAD_ID"
7
+ echo "Example: resolve-pr-thread PRRT_kwDOABC123"
8
+ exit 1
9
+ fi
10
+
11
+ THREAD_ID=$1
12
+
13
+ gh api graphql -f threadId="$THREAD_ID" -f query='
14
+ mutation ResolveReviewThread($threadId: ID!) {
15
+ resolveReviewThread(input: {threadId: $threadId}) {
16
+ thread {
17
+ id
18
+ isResolved
19
+ path
20
+ line
21
+ }
22
+ }
23
+ }'
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: setup
3
+ description: Configure which review agents run for your project. Auto-detects stack and writes systematic.local.md.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Systematic Setup
8
+
9
+ Interactive setup for `systematic.local.md` — configures which agents run during `/workflows:review` and `/workflows:work`.
10
+
11
+ ## Step 1: Check Existing Config
12
+
13
+ Read `systematic.local.md` in the project root. If it exists, display current settings summary and use question:
14
+
15
+ ```
16
+ question: "Settings file already exists. What would you like to do?"
17
+ header: "Config"
18
+ options:
19
+ - label: "Reconfigure"
20
+ description: "Run the interactive setup again from scratch"
21
+ - label: "View current"
22
+ description: "Show the file contents, then stop"
23
+ - label: "Cancel"
24
+ description: "Keep current settings"
25
+ ```
26
+
27
+ If "View current": read and display the file, then stop.
28
+ If "Cancel": stop.
29
+
30
+ ## Step 2: Detect and Ask
31
+
32
+ Auto-detect the project stack:
33
+
34
+ ```bash
35
+ test -f Gemfile && test -f config/routes.rb && echo "rails" || \
36
+ test -f Gemfile && echo "ruby" || \
37
+ test -f tsconfig.json && echo "typescript" || \
38
+ test -f package.json && echo "javascript" || \
39
+ test -f pyproject.toml && echo "python" || \
40
+ test -f requirements.txt && echo "python" || \
41
+ echo "general"
42
+ ```
43
+
44
+ Use question:
45
+
46
+ ```
47
+ question: "Detected {type} project. How would you like to configure?"
48
+ header: "Setup"
49
+ options:
50
+ - label: "Auto-configure (Recommended)"
51
+ description: "Use smart defaults for {type}. Done in one click."
52
+ - label: "Customize"
53
+ description: "Choose stack, focus areas, and review depth."
54
+ ```
55
+
56
+ ### If Auto-configure → Skip to Step 4 with defaults
57
+
58
+ - **Rails:** `[kieran-rails-reviewer, dhh-rails-reviewer, code-simplicity-reviewer, security-sentinel, performance-oracle]`
59
+ - **Python:** `[kieran-python-reviewer, code-simplicity-reviewer, security-sentinel, performance-oracle]`
60
+ - **TypeScript:** `[kieran-typescript-reviewer, code-simplicity-reviewer, security-sentinel, performance-oracle]`
61
+ - **General:** `[code-simplicity-reviewer, security-sentinel, performance-oracle, architecture-strategist]`
62
+
63
+ ### If Customize → Step 3
64
+
65
+ ## Step 3: Customize (3 questions)
66
+
67
+ **a. Stack** — confirm or override:
68
+
69
+ ```
70
+ question: "Which stack should we optimize for?"
71
+ header: "Stack"
72
+ options:
73
+ - label: "{detected_type} (Recommended)"
74
+ description: "Auto-detected from project files"
75
+ - label: "Rails"
76
+ description: "Ruby on Rails — adds DHH-style and Rails-specific reviewers"
77
+ - label: "Python"
78
+ description: "Python — adds Pythonic pattern reviewer"
79
+ - label: "TypeScript"
80
+ description: "TypeScript — adds type safety reviewer"
81
+ ```
82
+
83
+ Only show options that differ from the detected type.
84
+
85
+ **b. Focus areas** — multiSelect:
86
+
87
+ ```
88
+ question: "Which review areas matter most?"
89
+ header: "Focus"
90
+ multiSelect: true
91
+ options:
92
+ - label: "Security"
93
+ description: "Vulnerability scanning, auth, input validation (security-sentinel)"
94
+ - label: "Performance"
95
+ description: "N+1 queries, memory leaks, complexity (performance-oracle)"
96
+ - label: "Architecture"
97
+ description: "Design patterns, SOLID, separation of concerns (architecture-strategist)"
98
+ - label: "Code simplicity"
99
+ description: "Over-engineering, YAGNI violations (code-simplicity-reviewer)"
100
+ ```
101
+
102
+ **c. Depth:**
103
+
104
+ ```
105
+ question: "How thorough should reviews be?"
106
+ header: "Depth"
107
+ options:
108
+ - label: "Thorough (Recommended)"
109
+ description: "Stack reviewers + all selected focus agents."
110
+ - label: "Fast"
111
+ description: "Stack reviewers + code simplicity only. Less context, quicker."
112
+ - label: "Comprehensive"
113
+ description: "All above + git history, data integrity, agent-native checks."
114
+ ```
115
+
116
+ ## Step 4: Build Agent List and Write File
117
+
118
+ **Stack-specific agents:**
119
+ - Rails → `kieran-rails-reviewer, dhh-rails-reviewer`
120
+ - Python → `kieran-python-reviewer`
121
+ - TypeScript → `kieran-typescript-reviewer`
122
+ - General → (none)
123
+
124
+ **Focus area agents:**
125
+ - Security → `security-sentinel`
126
+ - Performance → `performance-oracle`
127
+ - Architecture → `architecture-strategist`
128
+ - Code simplicity → `code-simplicity-reviewer`
129
+
130
+ **Depth:**
131
+ - Thorough: stack + selected focus areas
132
+ - Fast: stack + `code-simplicity-reviewer` only
133
+ - Comprehensive: all above + `git-history-analyzer, data-integrity-guardian, agent-native-reviewer`
134
+
135
+ **Plan review agents:** stack-specific reviewer + `code-simplicity-reviewer`.
136
+
137
+ Write `systematic.local.md`:
138
+
139
+ ```markdown
140
+ ---
141
+ review_agents: [{computed agent list}]
142
+ plan_review_agents: [{computed plan agent list}]
143
+ ---
144
+
145
+ # Review Context
146
+
147
+ Add project-specific review instructions here.
148
+ These notes are passed to all review agents during /workflows:review and /workflows:work.
149
+
150
+ Examples:
151
+ - "We use Turbo Frames heavily — check for frame-busting issues"
152
+ - "Our API is public — extra scrutiny on input validation"
153
+ - "Performance-critical: we serve 10k req/s on this endpoint"
154
+ ```
155
+
156
+ ## Step 5: Confirm
157
+
158
+ ```
159
+ Saved to systematic.local.md
160
+
161
+ Stack: {type}
162
+ Review depth: {depth}
163
+ Agents: {count} configured
164
+ {agent list, one per line}
165
+
166
+ Tip: Edit the "Review Context" section to add project-specific instructions.
167
+ Re-run this setup anytime to reconfigure.
168
+ ```