@fro.bot/systematic 2.2.1 → 2.3.1
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.
- package/agents/document-review/adversarial-document-reviewer.md +87 -0
- package/agents/review/adversarial-reviewer.md +107 -0
- package/agents/review/cli-agent-readiness-reviewer.md +443 -0
- package/agents/review/cli-readiness-reviewer.md +69 -0
- package/agents/review/previous-comments-reviewer.md +64 -0
- package/agents/review/project-standards-reviewer.md +80 -0
- package/dist/cli.js +1 -1
- package/dist/{index-bky4p9gw.js → index-5wn35nny.js} +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/skills/claude-permissions-optimizer/scripts/extract-commands.mjs +2 -2
- package/skills/claude-permissions-optimizer/scripts/normalize.mjs +8 -8
- package/skills/git-clean-gone-branches/SKILL.md +63 -0
- package/skills/git-clean-gone-branches/scripts/clean-gone +48 -0
- package/skills/git-commit/SKILL.md +103 -0
- package/skills/git-commit-push-pr/SKILL.md +419 -0
- package/skills/onboarding/SKILL.md +407 -0
- package/skills/onboarding/scripts/inventory.mjs +1043 -0
- package/skills/resolve-pr-feedback/SKILL.md +374 -0
- package/skills/resolve-pr-feedback/scripts/get-pr-comments +104 -0
- package/skills/resolve-pr-feedback/scripts/get-thread-for-comment +58 -0
- package/skills/resolve-pr-feedback/scripts/reply-to-pr-thread +33 -0
- package/skills/{resolve-pr-parallel → resolve-pr-feedback}/scripts/resolve-pr-thread +0 -0
- package/skills/todo-create/SKILL.md +109 -0
- package/skills/todo-resolve/SKILL.md +68 -0
- package/skills/todo-triage/SKILL.md +70 -0
- package/skills/ce-review-beta/SKILL.md +0 -506
- package/skills/ce-review-beta/references/diff-scope.md +0 -31
- package/skills/ce-review-beta/references/findings-schema.json +0 -128
- package/skills/ce-review-beta/references/persona-catalog.md +0 -50
- package/skills/ce-review-beta/references/review-output-template.md +0 -115
- package/skills/ce-review-beta/references/subagent-template.md +0 -56
- package/skills/file-todos/SKILL.md +0 -231
- package/skills/resolve-pr-parallel/SKILL.md +0 -96
- package/skills/resolve-pr-parallel/scripts/get-pr-comments +0 -68
- package/skills/resolve-todo-parallel/SKILL.md +0 -68
- package/skills/triage/SKILL.md +0 -312
- package/skills/workflows-brainstorm/SKILL.md +0 -11
- package/skills/workflows-compound/SKILL.md +0 -10
- package/skills/workflows-plan/SKILL.md +0 -10
- package/skills/workflows-review/SKILL.md +0 -10
- package/skills/workflows-work/SKILL.md +0 -10
- /package/skills/{file-todos → todo-create}/assets/todo-template.md +0 -0
|
@@ -1,96 +0,0 @@
|
|
|
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
|
-
Detect git context from the current working directory:
|
|
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 at [scripts/get-pr-comments](scripts/get-pr-comments):
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
bash 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 task list of all unresolved items grouped by type (e.g., `todowrite` in OpenCode, `update_plan` in Codex):
|
|
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 `systematic:workflow:pr-comment-resolver` agent for each unresolved item.
|
|
49
|
-
|
|
50
|
-
If there are 3 comments, spawn 3 agents — one per comment. Prefer running all agents in parallel; if the platform does not support parallel dispatch, run them sequentially.
|
|
51
|
-
|
|
52
|
-
Keep parent-context pressure bounded:
|
|
53
|
-
- If there are 1-4 unresolved items, direct parallel returns are fine
|
|
54
|
-
- If there are 5+ unresolved items, launch in batches of at most 4 agents at a time
|
|
55
|
-
- Require each resolver agent to return a short status summary to the parent: comment/thread handled, files changed, tests run or skipped, any blocker that still needs human attention, and for question-only threads the substantive reply text so the parent can post or verify it
|
|
56
|
-
|
|
57
|
-
If the PR is large enough that even batched short returns are likely to get noisy, use a per-run scratch directory such as `.context/systematic/resolve-pr-parallel/<run-id>/`:
|
|
58
|
-
- Have each resolver write a compact artifact for its thread there
|
|
59
|
-
- Return only a completion summary to the parent
|
|
60
|
-
- Re-read only the artifacts that are needed to resolve threads, answer reviewer questions, or summarize the batch
|
|
61
|
-
|
|
62
|
-
### 4. Commit & Resolve
|
|
63
|
-
|
|
64
|
-
- Commit changes with a clear message referencing the PR feedback
|
|
65
|
-
- Resolve each thread programmatically using [scripts/resolve-pr-thread](scripts/resolve-pr-thread):
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
bash scripts/resolve-pr-thread THREAD_ID
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
- Push to remote
|
|
72
|
-
|
|
73
|
-
### 5. Verify
|
|
74
|
-
|
|
75
|
-
Re-fetch comments to confirm all threads are resolved:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
bash scripts/get-pr-comments PR_NUMBER
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Should return an empty array `[]`. If threads remain, repeat from step 1.
|
|
82
|
-
|
|
83
|
-
If a scratch directory was used and the user did not ask to inspect it, clean it up after verification succeeds.
|
|
84
|
-
|
|
85
|
-
## Scripts
|
|
86
|
-
|
|
87
|
-
- [scripts/get-pr-comments](scripts/get-pr-comments) - GraphQL query for unresolved review threads
|
|
88
|
-
- [scripts/resolve-pr-thread](scripts/resolve-pr-thread) - GraphQL mutation to resolve a thread by ID
|
|
89
|
-
|
|
90
|
-
## Success Criteria
|
|
91
|
-
|
|
92
|
-
- All unresolved review threads addressed
|
|
93
|
-
- Changes committed and pushed
|
|
94
|
-
- Threads resolved via GraphQL (marked as resolved on GitHub)
|
|
95
|
-
- Empty result from get-pr-comments on verify
|
|
96
|
-
|
|
@@ -1,68 +0,0 @@
|
|
|
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 EveryInc/cora"
|
|
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))'
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: resolve-todo-parallel
|
|
3
|
-
description: Resolve all pending CLI todos using parallel processing, compound on lessons learned, then clean up completed todos.
|
|
4
|
-
argument-hint: '[optional: specific todo ID or pattern]'
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Resolve all TODO comments using parallel processing, document lessons learned, then clean up completed todos.
|
|
8
|
-
|
|
9
|
-
## Workflow
|
|
10
|
-
|
|
11
|
-
### 1. Analyze
|
|
12
|
-
|
|
13
|
-
Get all unresolved TODOs from `.context/systematic/todos/*.md` and legacy `todos/*.md`
|
|
14
|
-
|
|
15
|
-
Residual actionable work may come from `ce:review-beta mode:autonomous` after its in-skill `safe_auto` pass. Treat those todos as normal unresolved work items; the review skill has already decided they should not be auto-fixed inline.
|
|
16
|
-
|
|
17
|
-
If any todo recommends deleting, removing, or gitignoring files in `docs/brainstorms/`, `docs/plans/`, or `docs/solutions/`, skip it and mark it as `wont_fix`. These are systematic pipeline artifacts that are intentional and permanent.
|
|
18
|
-
|
|
19
|
-
### 2. Plan
|
|
20
|
-
|
|
21
|
-
Create a task list of all unresolved items grouped by type (e.g., `todowrite` in OpenCode, `update_plan` in Codex). Analyze dependencies and prioritize items that others depend on. For example, if a rename is needed, it must complete before dependent items. Output a mermaid flow diagram showing execution order — what can run in parallel, and what must run first.
|
|
22
|
-
|
|
23
|
-
### 3. Implement (PARALLEL)
|
|
24
|
-
|
|
25
|
-
Spawn a `systematic:workflow:pr-comment-resolver` agent for each unresolved item.
|
|
26
|
-
|
|
27
|
-
If there are 3 items, spawn 3 agents — one per item. Prefer running all agents in parallel; if the platform does not support parallel dispatch, run them sequentially respecting the dependency order from step 2.
|
|
28
|
-
|
|
29
|
-
Keep parent-context pressure bounded:
|
|
30
|
-
- If there are 1-4 unresolved items, direct parallel returns are fine
|
|
31
|
-
- If there are 5+ unresolved items, launch in batches of at most 4 agents at a time
|
|
32
|
-
- Require each resolver agent to return only a short status summary to the parent: todo handled, files changed, tests run or skipped, and any blocker that still needs follow-up
|
|
33
|
-
|
|
34
|
-
If the todo set is large enough that even batched short returns are likely to get noisy, use a per-run scratch directory such as `.context/systematic/resolve-todo-parallel/<run-id>/`:
|
|
35
|
-
- Have each resolver write a compact artifact for its todo there
|
|
36
|
-
- Return only a completion summary to the parent
|
|
37
|
-
- Re-read only the artifacts that are needed to summarize outcomes, document learnings, or decide whether a todo is truly resolved
|
|
38
|
-
|
|
39
|
-
### 4. Commit & Resolve
|
|
40
|
-
|
|
41
|
-
- Commit changes
|
|
42
|
-
- Remove the TODO from the file, and mark it as resolved.
|
|
43
|
-
- Push to remote
|
|
44
|
-
|
|
45
|
-
GATE: STOP. Verify that todos have been resolved and changes committed. Do NOT proceed to step 5 if no todos were resolved.
|
|
46
|
-
|
|
47
|
-
### 5. Compound on Lessons Learned
|
|
48
|
-
|
|
49
|
-
Load the `ce:compound` skill to document what was learned from resolving the todos.
|
|
50
|
-
|
|
51
|
-
The todo resolutions often surface patterns, recurring issues, or architectural insights worth capturing. This step ensures that knowledge compounds rather than being lost.
|
|
52
|
-
|
|
53
|
-
GATE: STOP. Verify that the compound skill produced a solution document in `docs/solutions/`. If no document was created (user declined or no non-trivial learnings), continue to step 6.
|
|
54
|
-
|
|
55
|
-
### 6. Clean Up Completed Todos
|
|
56
|
-
|
|
57
|
-
Search both `.context/systematic/todos/` and legacy `todos/` for files with `done`, `resolved`, or `complete` status, then delete them to keep the todo list clean and actionable.
|
|
58
|
-
|
|
59
|
-
If a per-run scratch directory was created at `.context/systematic/resolve-todo-parallel/<run-id>/`, and the user did not ask to inspect it, delete that specific `<run-id>/` directory after todo cleanup succeeds. Do not delete any other `.context/` subdirectories.
|
|
60
|
-
|
|
61
|
-
After cleanup, output a summary:
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
Todos resolved: [count]
|
|
65
|
-
Lessons documented: [path to solution doc, or "skipped"]
|
|
66
|
-
Todos cleaned up: [count deleted]
|
|
67
|
-
```
|
|
68
|
-
|
package/skills/triage/SKILL.md
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: triage
|
|
3
|
-
description: Triage and categorize findings for the CLI todo system
|
|
4
|
-
argument-hint: '[findings list or source type]'
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
- First set the /model to Haiku
|
|
9
|
-
- Then read all pending todos from `.context/systematic/todos/` and legacy `todos/` directories
|
|
10
|
-
|
|
11
|
-
Present all findings, decisions, or issues here one by one for triage. The goal is to go through each item and decide whether to add it to the CLI todo system.
|
|
12
|
-
|
|
13
|
-
**IMPORTANT: DO NOT CODE ANYTHING DURING TRIAGE!**
|
|
14
|
-
|
|
15
|
-
This command is for:
|
|
16
|
-
|
|
17
|
-
- Triaging code review findings
|
|
18
|
-
- Processing security audit results
|
|
19
|
-
- Reviewing performance analysis
|
|
20
|
-
- Handling any other categorized findings that need tracking
|
|
21
|
-
|
|
22
|
-
## Workflow
|
|
23
|
-
|
|
24
|
-
### Step 1: Present Each Finding
|
|
25
|
-
|
|
26
|
-
For each finding, present in this format:
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
---
|
|
30
|
-
Issue #X: [Brief Title]
|
|
31
|
-
|
|
32
|
-
Severity: 🔴 P1 (CRITICAL) / 🟡 P2 (IMPORTANT) / 🔵 P3 (NICE-TO-HAVE)
|
|
33
|
-
|
|
34
|
-
Category: [Security/Performance/Architecture/Bug/Feature/etc.]
|
|
35
|
-
|
|
36
|
-
Description:
|
|
37
|
-
[Detailed explanation of the issue or improvement]
|
|
38
|
-
|
|
39
|
-
Location: [file_path:line_number]
|
|
40
|
-
|
|
41
|
-
Problem Scenario:
|
|
42
|
-
[Step by step what's wrong or could happen]
|
|
43
|
-
|
|
44
|
-
Proposed Solution:
|
|
45
|
-
[How to fix it]
|
|
46
|
-
|
|
47
|
-
Estimated Effort: [Small (< 2 hours) / Medium (2-8 hours) / Large (> 8 hours)]
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
Do you want to add this to the todo list?
|
|
51
|
-
1. yes - create todo file
|
|
52
|
-
2. next - skip this item
|
|
53
|
-
3. custom - modify before creating
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Step 2: Handle User Decision
|
|
57
|
-
|
|
58
|
-
**When user says "yes":**
|
|
59
|
-
|
|
60
|
-
1. **Update existing todo file** (if it exists) or **Create new filename:**
|
|
61
|
-
|
|
62
|
-
If todo already exists (from code review):
|
|
63
|
-
|
|
64
|
-
- Rename file from `{id}-pending-{priority}-{desc}.md` → `{id}-ready-{priority}-{desc}.md`
|
|
65
|
-
- Update YAML frontmatter: `status: pending` → `status: ready`
|
|
66
|
-
- Keep issue_id, priority, and description unchanged
|
|
67
|
-
|
|
68
|
-
If creating new todo:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
{next_id}-ready-{priority}-{brief-description}.md
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Priority mapping:
|
|
75
|
-
|
|
76
|
-
- 🔴 P1 (CRITICAL) → `p1`
|
|
77
|
-
- 🟡 P2 (IMPORTANT) → `p2`
|
|
78
|
-
- 🔵 P3 (NICE-TO-HAVE) → `p3`
|
|
79
|
-
|
|
80
|
-
Example: `042-ready-p1-transaction-boundaries.md`
|
|
81
|
-
|
|
82
|
-
2. **Update YAML frontmatter:**
|
|
83
|
-
|
|
84
|
-
```yaml
|
|
85
|
-
---
|
|
86
|
-
status: ready # IMPORTANT: Change from "pending" to "ready"
|
|
87
|
-
priority: p1 # or p2, p3 based on severity
|
|
88
|
-
issue_id: "042"
|
|
89
|
-
tags: [category, relevant-tags]
|
|
90
|
-
dependencies: []
|
|
91
|
-
---
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
3. **Populate or update the file:**
|
|
95
|
-
|
|
96
|
-
```yaml
|
|
97
|
-
# [Issue Title]
|
|
98
|
-
|
|
99
|
-
## Problem Statement
|
|
100
|
-
[Description from finding]
|
|
101
|
-
|
|
102
|
-
## Findings
|
|
103
|
-
- [Key discoveries]
|
|
104
|
-
- Location: [file_path:line_number]
|
|
105
|
-
- [Scenario details]
|
|
106
|
-
|
|
107
|
-
## Proposed Solutions
|
|
108
|
-
|
|
109
|
-
### Option 1: [Primary solution]
|
|
110
|
-
- **Pros**: [Benefits]
|
|
111
|
-
- **Cons**: [Drawbacks if any]
|
|
112
|
-
- **Effort**: [Small/Medium/Large]
|
|
113
|
-
- **Risk**: [Low/Medium/High]
|
|
114
|
-
|
|
115
|
-
## Recommended Action
|
|
116
|
-
[Filled during triage - specific action plan]
|
|
117
|
-
|
|
118
|
-
## Technical Details
|
|
119
|
-
- **Affected Files**: [List files]
|
|
120
|
-
- **Related Components**: [Components affected]
|
|
121
|
-
- **Database Changes**: [Yes/No - describe if yes]
|
|
122
|
-
|
|
123
|
-
## Resources
|
|
124
|
-
- Original finding: [Source of this issue]
|
|
125
|
-
- Related issues: [If any]
|
|
126
|
-
|
|
127
|
-
## Acceptance Criteria
|
|
128
|
-
- [ ] [Specific success criteria]
|
|
129
|
-
- [ ] Tests pass
|
|
130
|
-
- [ ] Code reviewed
|
|
131
|
-
|
|
132
|
-
## Work Log
|
|
133
|
-
|
|
134
|
-
### {date} - Approved for Work
|
|
135
|
-
**By:** Claude Triage System
|
|
136
|
-
**Actions:**
|
|
137
|
-
- Issue approved during triage session
|
|
138
|
-
- Status changed from pending → ready
|
|
139
|
-
- Ready to be picked up and worked on
|
|
140
|
-
|
|
141
|
-
**Learnings:**
|
|
142
|
-
- [Context and insights]
|
|
143
|
-
|
|
144
|
-
## Notes
|
|
145
|
-
Source: Triage session on {date}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
4. **Confirm approval:** "✅ Approved: `{new_filename}` (Issue #{issue_id}) - Status: **ready** → Ready to work on"
|
|
149
|
-
|
|
150
|
-
**When user says "next":**
|
|
151
|
-
|
|
152
|
-
- **Delete the todo file** - Remove it from its current location since it's not relevant
|
|
153
|
-
- Skip to the next item
|
|
154
|
-
- Track skipped items for summary
|
|
155
|
-
|
|
156
|
-
**When user says "custom":**
|
|
157
|
-
|
|
158
|
-
- Ask what to modify (priority, description, details)
|
|
159
|
-
- Update the information
|
|
160
|
-
- Present revised version
|
|
161
|
-
- Ask again: yes/next/custom
|
|
162
|
-
|
|
163
|
-
### Step 3: Continue Until All Processed
|
|
164
|
-
|
|
165
|
-
- Process all items one by one
|
|
166
|
-
- Track using todowrite for visibility
|
|
167
|
-
- Don't wait for approval between items - keep moving
|
|
168
|
-
|
|
169
|
-
### Step 4: Final Summary
|
|
170
|
-
|
|
171
|
-
After all items processed:
|
|
172
|
-
|
|
173
|
-
````markdown
|
|
174
|
-
## Triage Complete
|
|
175
|
-
|
|
176
|
-
**Total Items:** [X] **Todos Approved (ready):** [Y] **Skipped:** [Z]
|
|
177
|
-
|
|
178
|
-
### Approved Todos (Ready for Work):
|
|
179
|
-
|
|
180
|
-
- `042-ready-p1-transaction-boundaries.md` - Transaction boundary issue
|
|
181
|
-
- `043-ready-p2-cache-optimization.md` - Cache performance improvement ...
|
|
182
|
-
|
|
183
|
-
### Skipped Items (Deleted):
|
|
184
|
-
|
|
185
|
-
- Item #5: [reason] - Removed
|
|
186
|
-
- Item #12: [reason] - Removed
|
|
187
|
-
|
|
188
|
-
### Summary of Changes Made:
|
|
189
|
-
|
|
190
|
-
During triage, the following status updates occurred:
|
|
191
|
-
|
|
192
|
-
- **Pending → Ready:** Filenames and frontmatter updated to reflect approved status
|
|
193
|
-
- **Deleted:** Todo files for skipped findings removed
|
|
194
|
-
- Each approved file now has `status: ready` in YAML frontmatter
|
|
195
|
-
|
|
196
|
-
### Next Steps:
|
|
197
|
-
|
|
198
|
-
1. View approved todos ready for work:
|
|
199
|
-
```bash
|
|
200
|
-
ls .context/systematic/todos/*-ready-*.md todos/*-ready-*.md 2>/dev/null
|
|
201
|
-
```
|
|
202
|
-
````
|
|
203
|
-
|
|
204
|
-
2. Start work on approved items:
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
/resolve-todo-parallel # Work on multiple approved items efficiently
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
3. Or pick individual items to work on
|
|
211
|
-
|
|
212
|
-
4. As you work, update todo status:
|
|
213
|
-
- Ready → In Progress (in your local context as you work)
|
|
214
|
-
- In Progress → Complete (rename file: ready → complete, update frontmatter)
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
## Example Response Format
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
---
|
|
223
|
-
|
|
224
|
-
Issue #5: Missing Transaction Boundaries for Multi-Step Operations
|
|
225
|
-
|
|
226
|
-
Severity: 🔴 P1 (CRITICAL)
|
|
227
|
-
|
|
228
|
-
Category: Data Integrity / Security
|
|
229
|
-
|
|
230
|
-
Description: The google_oauth2_connected callback in GoogleOauthCallbacks concern performs multiple database operations without transaction protection. If any step fails midway, the database is left in an inconsistent state.
|
|
231
|
-
|
|
232
|
-
Location: app/controllers/concerns/google_oauth_callbacks.rb:13-50
|
|
233
|
-
|
|
234
|
-
Problem Scenario:
|
|
235
|
-
|
|
236
|
-
1. User.update succeeds (email changed)
|
|
237
|
-
2. Account.save! fails (validation error)
|
|
238
|
-
3. Result: User has changed email but no associated Account
|
|
239
|
-
4. Next login attempt fails completely
|
|
240
|
-
|
|
241
|
-
Operations Without Transaction:
|
|
242
|
-
|
|
243
|
-
- User confirmation (line 13)
|
|
244
|
-
- Waitlist removal (line 14)
|
|
245
|
-
- User profile update (line 21-23)
|
|
246
|
-
- Account creation (line 28-37)
|
|
247
|
-
- Avatar attachment (line 39-45)
|
|
248
|
-
- Journey creation (line 47)
|
|
249
|
-
|
|
250
|
-
Proposed Solution: Wrap all operations in ApplicationRecord.transaction do ... end block
|
|
251
|
-
|
|
252
|
-
Estimated Effort: Small (30 minutes)
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
Do you want to add this to the todo list?
|
|
257
|
-
|
|
258
|
-
1. yes - create todo file
|
|
259
|
-
2. next - skip this item
|
|
260
|
-
3. custom - modify before creating
|
|
261
|
-
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
## Important Implementation Details
|
|
265
|
-
|
|
266
|
-
### Status Transitions During Triage
|
|
267
|
-
|
|
268
|
-
**When "yes" is selected:**
|
|
269
|
-
1. Rename file: `{id}-pending-{priority}-{desc}.md` → `{id}-ready-{priority}-{desc}.md`
|
|
270
|
-
2. Update YAML frontmatter: `status: pending` → `status: ready`
|
|
271
|
-
3. Update Work Log with triage approval entry
|
|
272
|
-
4. Confirm: "✅ Approved: `{filename}` (Issue #{issue_id}) - Status: **ready**"
|
|
273
|
-
|
|
274
|
-
**When "next" is selected:**
|
|
275
|
-
1. Delete the todo file from its current location
|
|
276
|
-
2. Skip to next item
|
|
277
|
-
3. No file remains in the system
|
|
278
|
-
|
|
279
|
-
### Progress Tracking
|
|
280
|
-
|
|
281
|
-
Every time you present a todo as a header, include:
|
|
282
|
-
- **Progress:** X/Y completed (e.g., "3/10 completed")
|
|
283
|
-
- **Estimated time remaining:** Based on how quickly you're progressing
|
|
284
|
-
- **Pacing:** Monitor time per finding and adjust estimate accordingly
|
|
285
|
-
|
|
286
|
-
Example:
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
Progress: 3/10 completed | Estimated time: ~2 minutes remaining
|
|
290
|
-
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
### Do Not Code During Triage
|
|
294
|
-
|
|
295
|
-
- ✅ Present findings
|
|
296
|
-
- ✅ Make yes/next/custom decisions
|
|
297
|
-
- ✅ Update todo files (rename, frontmatter, work log)
|
|
298
|
-
- ❌ Do NOT implement fixes or write code
|
|
299
|
-
- ❌ Do NOT add detailed implementation details
|
|
300
|
-
- ❌ That's for /resolve-todo-parallel phase
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
When done give these options
|
|
304
|
-
|
|
305
|
-
```markdown
|
|
306
|
-
What would you like to do next?
|
|
307
|
-
|
|
308
|
-
1. run /resolve-todo-parallel to resolve the todos
|
|
309
|
-
2. commit the todos
|
|
310
|
-
3. nothing, go chill
|
|
311
|
-
```
|
|
312
|
-
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflows:brainstorm
|
|
3
|
-
description: '[DEPRECATED] Use /ce:brainstorm instead — renamed for clarity.'
|
|
4
|
-
argument-hint: '[feature idea or problem to explore]'
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
NOTE: /workflows:brainstorm is deprecated. Please use /ce:brainstorm instead. This alias will be removed in a future version.
|
|
9
|
-
|
|
10
|
-
/ce:brainstorm $ARGUMENTS
|
|
11
|
-
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflows:compound
|
|
3
|
-
description: '[DEPRECATED] Use /ce:compound instead — renamed for clarity.'
|
|
4
|
-
argument-hint: '[optional: brief context about the fix]'
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
NOTE: /workflows:compound is deprecated. Please use /ce:compound instead. This alias will be removed in a future version.
|
|
9
|
-
|
|
10
|
-
/ce:compound $ARGUMENTS
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflows:plan
|
|
3
|
-
description: '[DEPRECATED] Use /ce:plan instead — renamed for clarity.'
|
|
4
|
-
argument-hint: '[feature description, bug report, or improvement idea]'
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
NOTE: /workflows:plan is deprecated. Please use /ce:plan instead. This alias will be removed in a future version.
|
|
9
|
-
|
|
10
|
-
/ce:plan $ARGUMENTS
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflows:review
|
|
3
|
-
description: '[DEPRECATED] Use /ce:review instead — renamed for clarity.'
|
|
4
|
-
argument-hint: '[PR number, GitHub URL, branch name, or latest]'
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
NOTE: /workflows:review is deprecated. Please use /ce:review instead. This alias will be removed in a future version.
|
|
9
|
-
|
|
10
|
-
/ce:review $ARGUMENTS
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflows:work
|
|
3
|
-
description: '[DEPRECATED] Use /ce:work instead — renamed for clarity.'
|
|
4
|
-
argument-hint: '[plan file, specification, or todo file path]'
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
NOTE: /workflows:work is deprecated. Please use /ce:work instead. This alias will be removed in a future version.
|
|
9
|
-
|
|
10
|
-
/ce:work $ARGUMENTS
|
|
File without changes
|