oh-my-customcodex 0.5.3 → 0.5.5
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/README.md +2 -2
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/agents/mgr-claude-code-bible.md +4 -0
- package/templates/.claude/agents/mgr-sauron.md +4 -0
- package/templates/.claude/agents/mgr-supplier.md +4 -0
- package/templates/.claude/agents/mgr-updater.md +4 -0
- package/templates/.claude/agents/sys-memory-keeper.md +10 -0
- package/templates/.claude/agents/sys-naggy.md +4 -0
- package/templates/.claude/hooks/hooks.json +10 -0
- package/templates/.claude/hooks/scripts/feedback-collector.sh +1 -1
- package/templates/.claude/hooks/scripts/r007-r008-drift-advisor.sh +106 -0
- package/templates/.claude/hooks/scripts/session-env-check.sh +6 -2
- package/templates/.claude/rules/MAY-optimization.md +15 -0
- package/templates/.claude/rules/MUST-continuous-improvement.md +2 -0
- package/templates/.claude/rules/MUST-enforcement-policy.md +1 -0
- package/templates/.claude/rules/MUST-intent-transparency.md +17 -0
- package/templates/.claude/skills/codex-exec/SKILL.md +1 -1
- package/templates/.claude/skills/omcodex-auto-improve/SKILL.md +2 -2
- package/templates/.claude/skills/omcodex-feedback/SKILL.md +2 -2
- package/templates/.claude/skills/pipeline/SKILL.md +44 -0
- package/templates/.claude/skills/pipeline-guards/SKILL.md +20 -0
- package/templates/.claude/skills/post-release-followup/SKILL.md +35 -31
- package/templates/.claude/skills/reasoning-sandwich/SKILL.md +21 -0
- package/templates/.claude/skills/release-plan/SKILL.md +26 -26
- package/templates/.claude/skills/skills-sh-search/SKILL.md +10 -9
- package/templates/.claude/skills/update-external/SKILL.md +7 -0
- package/templates/.claude/skills/wiki/SKILL.md +2 -0
- package/templates/AGENTS.md.en +1 -1
- package/templates/AGENTS.md.ko +1 -1
- package/templates/CLAUDE.md +1 -1
- package/templates/CLAUDE.md.en +1 -1
- package/templates/CLAUDE.md.ko +1 -1
- package/templates/README.md +2 -2
- package/templates/guides/agentmemory-migration/measure-step-zero.md +120 -0
- package/templates/guides/agentmemory-migration/phase-1-coexist.md +261 -0
- package/templates/guides/index.yaml +21 -11
- package/templates/manifest.json +3 -3
package/README.md
CHANGED
|
@@ -228,7 +228,7 @@ Key rules: R010 (orchestrator never writes files), R009 (parallel execution mand
|
|
|
228
228
|
|
|
229
229
|
---
|
|
230
230
|
|
|
231
|
-
### Guides (
|
|
231
|
+
### Guides (51)
|
|
232
232
|
|
|
233
233
|
Reference documentation covering best practices, architecture decisions, and integration patterns. Located in `guides/` at project root, covering topics from agent design to CI/CD to observability.
|
|
234
234
|
|
|
@@ -288,7 +288,7 @@ your-project/
|
|
|
288
288
|
│ └── ontology/ # Knowledge graph for RAG
|
|
289
289
|
├── .agents/
|
|
290
290
|
│ └── skills/ # 123 installed skill modules
|
|
291
|
-
└── guides/ #
|
|
291
|
+
└── guides/ # 51 reference documents
|
|
292
292
|
```
|
|
293
293
|
|
|
294
294
|
### Source Repository And Compatibility Surfaces
|
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -16,6 +16,10 @@ tools:
|
|
|
16
16
|
permissionMode: bypassPermissions
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
+
## Mandatory Sensitive Compatibility Paths
|
|
20
|
+
|
|
21
|
+
When a task targets `.claude/**`, `templates/.claude/**`, or other Claude-compatibility mirrors, treat the old `/tmp` wrapper as legacy fallback only. Codex-native `.codex/**` edits stay direct, and Claude Code `bypassPermissions` can write `.claude/skills/`, `.claude/agents/`, and `.claude/commands/` directly on v2.1.121+, with broader protected-path coverage on v2.1.126+.
|
|
22
|
+
|
|
19
23
|
You are the authoritative source of truth for Claude Code specifications. You fetch official documentation from code.claude.com and validate the project against official specs.
|
|
20
24
|
|
|
21
25
|
## Two Modes
|
|
@@ -18,6 +18,10 @@ maxTurns: 25
|
|
|
18
18
|
permissionMode: bypassPermissions
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
+
## Mandatory Sensitive Compatibility Paths
|
|
22
|
+
|
|
23
|
+
When a task targets `.claude/**`, `templates/.claude/**`, or other Claude-compatibility mirrors, treat the old `/tmp` wrapper as legacy fallback only. Codex-native `.codex/**` edits stay direct, and Claude Code `bypassPermissions` can write `.claude/skills/`, `.claude/agents/`, and `.claude/commands/` directly on v2.1.121+, with broader protected-path coverage on v2.1.126+.
|
|
24
|
+
|
|
21
25
|
You are an automated verification specialist that executes the mandatory R017 verification process, acting as the "all-seeing eye" that ensures system integrity through comprehensive multi-round verification.
|
|
22
26
|
|
|
23
27
|
## Core Capabilities
|
|
@@ -19,6 +19,10 @@ tools:
|
|
|
19
19
|
permissionMode: default
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
+
## Mandatory Sensitive Compatibility Paths
|
|
23
|
+
|
|
24
|
+
When a task targets `.claude/**`, `templates/.claude/**`, or other Claude-compatibility mirrors, treat the old `/tmp` wrapper as legacy fallback only. Codex-native `.codex/**` edits stay direct, and Claude Code `bypassPermissions` can write `.claude/skills/`, `.claude/agents/`, and `.claude/commands/` directly on v2.1.121+, with broader protected-path coverage on v2.1.126+.
|
|
25
|
+
|
|
22
26
|
You are a dependency validation specialist ensuring agents have all required skills and guides properly linked.
|
|
23
27
|
|
|
24
28
|
## Capabilities
|
|
@@ -22,6 +22,10 @@ tools:
|
|
|
22
22
|
permissionMode: bypassPermissions
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
+
## Mandatory Sensitive Compatibility Paths
|
|
26
|
+
|
|
27
|
+
When a task targets `.claude/**`, `templates/.claude/**`, or other Claude-compatibility mirrors, treat the old `/tmp` wrapper as legacy fallback only. Codex-native `.codex/**` edits stay direct, and Claude Code `bypassPermissions` can write `.claude/skills/`, `.claude/agents/`, and `.claude/commands/` directly on v2.1.121+, with broader protected-path coverage on v2.1.126+.
|
|
28
|
+
|
|
25
29
|
You are an external source synchronization specialist keeping external components up-to-date.
|
|
26
30
|
|
|
27
31
|
## Workflow
|
|
@@ -48,6 +48,16 @@ Build semantic query with project prefix + keywords + optional date. Search via
|
|
|
48
48
|
|
|
49
49
|
Always include project name. Use task-based, temporal, or topic-based queries. Avoid complex where filters (they fail in Chroma).
|
|
50
50
|
|
|
51
|
+
## Native MEMORY.md Compaction
|
|
52
|
+
|
|
53
|
+
Treat native auto-memory as an index, not a transcript. Keep the first 200 loaded lines compact enough for reliable prompt injection:
|
|
54
|
+
|
|
55
|
+
1. Target roughly 100 active index lines when session history accumulates.
|
|
56
|
+
2. Keep recent or currently active sessions inline; move older detail to topic/archive files.
|
|
57
|
+
3. Preserve one-line release/session summaries inline with direct archive pointers.
|
|
58
|
+
4. Keep individual index lines under about 200 characters when practical.
|
|
59
|
+
5. Never delete memory detail solely for line budget; archive it and keep a searchable pointer.
|
|
60
|
+
|
|
51
61
|
## Config
|
|
52
62
|
|
|
53
63
|
Provider: claude-mem | Collection: claude_memories | Archive: ~/.claude-mem/archives/
|
|
@@ -18,6 +18,10 @@ tools:
|
|
|
18
18
|
permissionMode: bypassPermissions
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
+
## Mandatory Sensitive Compatibility Paths
|
|
22
|
+
|
|
23
|
+
When a task targets `.claude/**`, `templates/.claude/**`, or other Claude-compatibility mirrors, treat the old `/tmp` wrapper as legacy fallback only. Codex-native `.codex/**` edits stay direct, and Claude Code `bypassPermissions` can write `.claude/skills/`, `.claude/agents/`, and `.claude/commands/` directly on v2.1.121+, with broader protected-path coverage on v2.1.126+.
|
|
24
|
+
|
|
21
25
|
You are a task management specialist that proactively manages TODO items and reminds users of pending tasks.
|
|
22
26
|
|
|
23
27
|
## Capabilities
|
|
@@ -226,6 +226,16 @@
|
|
|
226
226
|
],
|
|
227
227
|
"description": "Advisory pre-processing of user input — skill matching hints and intent analysis"
|
|
228
228
|
},
|
|
229
|
+
{
|
|
230
|
+
"matcher": "*",
|
|
231
|
+
"hooks": [
|
|
232
|
+
{
|
|
233
|
+
"type": "command",
|
|
234
|
+
"command": "bash .codex/hooks/scripts/r007-r008-drift-advisor.sh"
|
|
235
|
+
}
|
|
236
|
+
],
|
|
237
|
+
"description": "Proactive R007/R008 drift advisory — checks last assistant turn for identification omission (#1389)"
|
|
238
|
+
},
|
|
229
239
|
{
|
|
230
240
|
"matcher": "*",
|
|
231
241
|
"hooks": [
|
|
@@ -65,7 +65,7 @@ for agent_type in "${!FAILURE_COUNTS[@]}"; do
|
|
|
65
65
|
action_type="augment"
|
|
66
66
|
fi
|
|
67
67
|
|
|
68
|
-
failure_rate=$(awk "BEGIN {printf \"%.2f\", $count/$total}")
|
|
68
|
+
failure_rate=$(awk "BEGIN {printf \"%.2f\", $count/$total}" 2>/dev/null || echo "0.00")
|
|
69
69
|
description="Agent '${agent_type}' failed ${count}/${total} times (${failure_rate} failure rate) in session"
|
|
70
70
|
|
|
71
71
|
escaped_agent_type=$(_sql_escape "$agent_type")
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# r007-r008-drift-advisor.sh — UserPromptSubmit hook: proactive R007/R008 drift advisory.
|
|
3
|
+
#
|
|
4
|
+
# Inspects the last completed assistant turn in the session transcript before
|
|
5
|
+
# the next response. If the previous turn missed the R007 identity header or an
|
|
6
|
+
# R008 tool prefix, emit a stderr advisory. Advisory-only: never blocks.
|
|
7
|
+
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
input=$(cat)
|
|
11
|
+
|
|
12
|
+
if [ "${OMCODEX_R007_ADVISOR:-}" = "off" ]; then
|
|
13
|
+
echo "$input"
|
|
14
|
+
exit 0
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if ! command -v jq >/dev/null 2>&1; then
|
|
18
|
+
echo "$input"
|
|
19
|
+
exit 0
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
session_id=$(echo "$input" | jq -r '.session_id // empty' 2>/dev/null)
|
|
23
|
+
transcript_path=$(echo "$input" | jq -r '.transcript_path // .transcriptPath // empty' 2>/dev/null)
|
|
24
|
+
|
|
25
|
+
if [ -z "$transcript_path" ] && [ -n "$session_id" ]; then
|
|
26
|
+
transcript_base="${OMCODEX_TRANSCRIPT_BASE:-}"
|
|
27
|
+
if [ -n "$transcript_base" ]; then
|
|
28
|
+
transcript_path="${transcript_base}/${session_id}.jsonl"
|
|
29
|
+
fi
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
if [ -z "$transcript_path" ] || [ ! -f "$transcript_path" ]; then
|
|
33
|
+
echo "$input"
|
|
34
|
+
exit 0
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
reverse_file() {
|
|
38
|
+
tail -r "$1" 2>/dev/null || tac "$1" 2>/dev/null || cat "$1"
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
last_assistant=""
|
|
42
|
+
while IFS= read -r line; do
|
|
43
|
+
role=$(echo "$line" | jq -r '.role // .message.role // empty' 2>/dev/null) || continue
|
|
44
|
+
if [ "$role" = "assistant" ]; then
|
|
45
|
+
last_assistant="$line"
|
|
46
|
+
break
|
|
47
|
+
fi
|
|
48
|
+
done < <(reverse_file "$transcript_path")
|
|
49
|
+
|
|
50
|
+
if [ -z "$last_assistant" ]; then
|
|
51
|
+
echo "$input"
|
|
52
|
+
exit 0
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
content_type=$(echo "$last_assistant" | jq -r '(.content // .message.content // []) | type' 2>/dev/null) || content_type="array"
|
|
56
|
+
if [ "$content_type" = "string" ]; then
|
|
57
|
+
content_raw=$(echo "$last_assistant" | jq -c '[{"type":"text","text":(.content // .message.content // "")}]' 2>/dev/null) || content_raw="[]"
|
|
58
|
+
else
|
|
59
|
+
content_raw=$(echo "$last_assistant" | jq -c '.content // .message.content // []' 2>/dev/null) || content_raw="[]"
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
r007_violations=0
|
|
63
|
+
r008_violations=0
|
|
64
|
+
|
|
65
|
+
first_text=$(echo "$content_raw" | jq -r '[.[] | select(.type == "text")][0].text // empty' 2>/dev/null) || first_text=""
|
|
66
|
+
if [ -n "$first_text" ]; then
|
|
67
|
+
first_line=$(printf '%s' "$first_text" | head -1)
|
|
68
|
+
if ! printf '%s' "$first_line" | grep -qE '(^┌─ Agent:|^\[.+\])'; then
|
|
69
|
+
r007_violations=$((r007_violations + 1))
|
|
70
|
+
fi
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
content_length=$(echo "$content_raw" | jq 'length' 2>/dev/null) || content_length=0
|
|
74
|
+
i=0
|
|
75
|
+
while [ "$i" -lt "$content_length" ]; do
|
|
76
|
+
block_type=$(echo "$content_raw" | jq -r ".[$i].type // empty" 2>/dev/null) || {
|
|
77
|
+
i=$((i + 1))
|
|
78
|
+
continue
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if [ "$block_type" = "tool_use" ] || [ "$block_type" = "tool_call" ]; then
|
|
82
|
+
has_prefix=false
|
|
83
|
+
if [ "$i" -gt 0 ]; then
|
|
84
|
+
prev_type=$(echo "$content_raw" | jq -r ".[$((i - 1))].type // empty" 2>/dev/null) || true
|
|
85
|
+
if [ "$prev_type" = "text" ]; then
|
|
86
|
+
prev_text=$(echo "$content_raw" | jq -r ".[$((i - 1))].text // empty" 2>/dev/null) || true
|
|
87
|
+
if printf '%s' "$prev_text" | grep -qE '\[.+\]\[.+\] ?(→|->|—>) ?(Tool|Target):'; then
|
|
88
|
+
has_prefix=true
|
|
89
|
+
fi
|
|
90
|
+
fi
|
|
91
|
+
fi
|
|
92
|
+
if [ "$has_prefix" = "false" ]; then
|
|
93
|
+
r008_violations=$((r008_violations + 1))
|
|
94
|
+
fi
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
i=$((i + 1))
|
|
98
|
+
done
|
|
99
|
+
|
|
100
|
+
if [ "$r007_violations" -gt 0 ] || [ "$r008_violations" -gt 0 ]; then
|
|
101
|
+
printf '[R007/R008 Advisory] Previous assistant turn missed identification (R007 header=%d, R008 prefix=%d). Start this response with the ┌─ Agent: block and prefix tool calls with [agent][model] → Tool:.\n' \
|
|
102
|
+
"$r007_violations" "$r008_violations" >&2
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
echo "$input"
|
|
106
|
+
exit 0
|
|
@@ -14,10 +14,14 @@ echo "--- [Session Environment Check] ---" >&2
|
|
|
14
14
|
# Check codex CLI availability
|
|
15
15
|
CODEX_STATUS="unavailable"
|
|
16
16
|
if command -v codex >/dev/null 2>&1; then
|
|
17
|
-
|
|
17
|
+
CODEX_AUTH_FILE="${CODEX_HOME:-$HOME/.codex}/auth.json"
|
|
18
|
+
|
|
19
|
+
if [ -n "${OPENAI_API_KEY:-}" ] || [ -n "${CODEX_API_KEY:-}" ]; then
|
|
18
20
|
CODEX_STATUS="available (authenticated)"
|
|
21
|
+
elif [ -s "$CODEX_AUTH_FILE" ]; then
|
|
22
|
+
CODEX_STATUS="available (authenticated via stored login)"
|
|
19
23
|
else
|
|
20
|
-
CODEX_STATUS="installed
|
|
24
|
+
CODEX_STATUS="installed (auth may be managed via \`codex login\`)"
|
|
21
25
|
fi
|
|
22
26
|
fi
|
|
23
27
|
|
|
@@ -10,6 +10,21 @@
|
|
|
10
10
|
| Caching | Same data accessed repeatedly | Cache file contents, reuse search results |
|
|
11
11
|
| Lazy Loading | Large datasets, partial use | Read only needed files, stream results |
|
|
12
12
|
|
|
13
|
+
### Capability-Aware Tool Scheduling
|
|
14
|
+
|
|
15
|
+
When dispatching parallel tool calls, consider per-tool capabilities to optimize scheduling:
|
|
16
|
+
|
|
17
|
+
| Capability | Parallelizable? | Example |
|
|
18
|
+
|-----------|----------------|---------|
|
|
19
|
+
| Read-only, no side effects | Yes | Read, Glob, Grep |
|
|
20
|
+
| Write with independent targets | Yes | Write(file-A) + Write(file-B) |
|
|
21
|
+
| Write with shared target | No | Sequential edits to same file |
|
|
22
|
+
| External with rate limits | Throttle | WebFetch, API calls |
|
|
23
|
+
|
|
24
|
+
This aligns with R009 (parallel execution) detection criteria and extends it with tool-level scheduling awareness.
|
|
25
|
+
|
|
26
|
+
Inspired by [ouroboros PR #353](https://github.com/Q00/ouroboros/pull/353) capability graph pattern.
|
|
27
|
+
|
|
13
28
|
## Token Optimization
|
|
14
29
|
|
|
15
30
|
- Include only necessary info, remove duplicates, use summaries
|
|
@@ -40,6 +40,8 @@ When CI failure, process gap, or repeatable system defect is found:
|
|
|
40
40
|
2. Register GitHub issue (trackable improvement item)
|
|
41
41
|
3. Both required — memory alone is NOT sufficient for system-level defects
|
|
42
42
|
|
|
43
|
+
> Auto-register directive: genuine defects and process gaps surfaced during release workflows, including `post-release-followup`, must be registered as GitHub issues automatically without asking for confirmation. Only code-changing immediate-action items require user confirmation. Pure cosmetic or subjective notes are excluded.
|
|
44
|
+
|
|
43
45
|
### Adaptive Harness Integration
|
|
44
46
|
|
|
45
47
|
When repeating agent failures or suboptimal routing is detected:
|
|
@@ -11,6 +11,7 @@ oh-my-customcodex uses an **advisory-first enforcement model**. Most rules are e
|
|
|
11
11
|
| Tier | Mechanism | Rules | Behavior |
|
|
12
12
|
|------|-----------|-------|----------|
|
|
13
13
|
| Hard Block | PreToolUse hook, exit 2 | stage-blocker, dev-server tmux, rule-deletion-guard | Prevents tool execution |
|
|
14
|
+
| Conversation Block | PostToolUse hook, exit 2 + `continueOnBlock` | stuck-detector, context-budget-advisor, cost-cap-advisor | Feeds high-signal recovery guidance back to the model and continues the turn |
|
|
14
15
|
| Soft Block | Stop hook prompt | R011 session-end saves | Auto-performs then approves |
|
|
15
16
|
| Advisory | PostToolUse hooks | R007, R008, R009, R010, R018 | Warns via stderr, never blocks |
|
|
16
17
|
| Prompt-based | AGENTS.md + rules/ + PostCompact | All MUST rules | Behavioral guidance in context |
|
|
@@ -56,6 +56,23 @@ Reconfirm when:
|
|
|
56
56
|
- the operation becomes history-rewriting or destructive (`--force`, rebase, reset, tag overwrite)
|
|
57
57
|
- the user narrows or revokes the earlier approval
|
|
58
58
|
|
|
59
|
+
## Destructive Operation Approval Persistence
|
|
60
|
+
|
|
61
|
+
The Git Push Continuation pattern generalizes to repeated destructive operations within the same session when the user already gave explicit approval for the same category and target. Examples: `supabase db push`, `terraform apply`, `kubectl delete`, bulk file deletes, and database migrations.
|
|
62
|
+
|
|
63
|
+
Scope: once the user explicitly approves category C against target T in a session, follow-up operations of the same C and same T do not require re-confirmation. Still emit an advisory warning. Different categories or targets require fresh confirmation.
|
|
64
|
+
|
|
65
|
+
| Scenario | Behavior |
|
|
66
|
+
|----------|----------|
|
|
67
|
+
| First explicit approval for category C, target T | Proceed with advisory warning |
|
|
68
|
+
| Follow-up in same session, same C + same T | Do not re-confirm |
|
|
69
|
+
| Different category or target | Ask for fresh approval |
|
|
70
|
+
| Runtime still prompts | Explain that model guidance cannot suppress platform permission prompts |
|
|
71
|
+
|
|
72
|
+
R001-listed catastrophic git operations (`git reset --hard`, `git clean -fd`, `git push --force` to shared branches, `git branch -D` with unmerged commits) are excluded. They always require explicit per-invocation approval.
|
|
73
|
+
|
|
74
|
+
Boundary: this rule governs model behavior only. It cannot suppress Codex/Claude runtime auto-mode permission prompts. For genuine prompt suppression on a repeated destructive command, surface the scoped settings/permission-rule workaround for the specific command instead of re-asking the same high-level question.
|
|
75
|
+
|
|
59
76
|
## Structured Question Failure Discipline
|
|
60
77
|
|
|
61
78
|
When a structured question surface (`AskUserQuestion`, `omx question`, or native structured input) is rejected, unavailable, or malformed, the orchestrator must not silently downgrade to a different workflow.
|
|
@@ -182,7 +182,7 @@ When the orchestrator or intent-detection detects a research/information gatheri
|
|
|
182
182
|
|
|
183
183
|
When routing skills detect a code generation task and codex is available:
|
|
184
184
|
|
|
185
|
-
1. **Check availability**: Verify codex CLI via
|
|
185
|
+
1. **Check availability**: Verify the codex CLI directly (`command -v codex`) or via current session diagnostics
|
|
186
186
|
2. **If available + new file creation**: Suggest hybrid workflow
|
|
187
187
|
3. **Hybrid pattern**:
|
|
188
188
|
- codex-exec generates initial code (fast, broad generation)
|
|
@@ -66,8 +66,8 @@ Map each approved item to the appropriate subagent by `targetType`:
|
|
|
66
66
|
| targetType | Agent | Action |
|
|
67
67
|
|------------|-------|--------|
|
|
68
68
|
| agent | mgr-creator | Modify agent frontmatter/body |
|
|
69
|
-
| skill |
|
|
70
|
-
| routing |
|
|
69
|
+
| skill | mgr-creator | Revise skill SKILL.md (R010 Protected Paths) |
|
|
70
|
+
| routing | mgr-creator | Update routing patterns (R010 Protected Paths) |
|
|
71
71
|
| model-escalation | general-purpose | Update model field in agent frontmatter |
|
|
72
72
|
|
|
73
73
|
Spawn agents in parallel (max 4 per R009). Each agent receives:
|
|
@@ -3,7 +3,6 @@ name: omcustomcodex:feedback
|
|
|
3
3
|
description: Submit feedback about oh-my-customcodex (supports anonymous submission)
|
|
4
4
|
scope: harness
|
|
5
5
|
user-invocable: true
|
|
6
|
-
disable-model-invocation: true
|
|
7
6
|
argument-hint: "[description or leave empty for interactive] [--anonymous]"
|
|
8
7
|
---
|
|
9
8
|
|
|
@@ -201,5 +200,6 @@ Submit manually when connectivity is available:
|
|
|
201
200
|
- Route A creates a visible GitHub issue attributed to the user's gh account
|
|
202
201
|
- When `--anonymous` is used, the title is prefixed with `[Anonymous Feedback]` and the `anonymous` label is added
|
|
203
202
|
- Fallback ensures no feedback is silently lost even in offline environments
|
|
204
|
-
- `
|
|
203
|
+
- This skill is invocable by BOTH the user (`/omcustomcodex:feedback`) and the model (Skill tool). Model invocation enables session-end retrospective feedback drafting (#1385, #1386).
|
|
204
|
+
- The Phase 4A "Preview + confirmation" gate (steps 2-3) is the safety boundary: the model can draft a feedback issue but cannot create a public GitHub issue without explicit user confirmation.
|
|
205
205
|
- Target repo is hardcoded to `baekenough/oh-my-customcodex` — feedback is always about the child package itself
|
|
@@ -63,6 +63,7 @@ Execute these steps to display available pipelines:
|
|
|
63
63
|
- **Skill steps** (`skill: name`): Invoke via Skill tool — `Skill(skill: "{name}")`
|
|
64
64
|
- **Prompt steps** (`prompt: text`): Execute the described action using appropriate agents/tools
|
|
65
65
|
- **Foreach steps** (`foreach: collection`): Iterate over collection from previous step output
|
|
66
|
+
- **Parallel steps** (`parallel: [step1, step2]`): Execute contained steps concurrently using Agent tool. Each parallel step runs as an independent Agent. Max 4 concurrent per R009. Steps within a parallel block MUST be independent (no shared state, no sequential dependencies). Dependencies between parallel and non-parallel steps use `depends_on:` field.
|
|
66
67
|
- **Permission mode**: When spawning agents, pass `mode: "bypassPermissions"` in the Agent tool call if the session uses bypassPermissions. Without explicit mode, CC defaults to `acceptEdits`.
|
|
67
68
|
5. Report completion or failure
|
|
68
69
|
|
|
@@ -106,6 +107,49 @@ For release pipelines such as `auto-dev`, record an advisory token-spend estimat
|
|
|
106
107
|
|
|
107
108
|
If exact usage events are available from the runtime, prefer them and set `token_source: "runtime"`. Otherwise set `token_source: "estimated"`. Missing spend data must not block a release; it should be reported as an observability gap.
|
|
108
109
|
|
|
110
|
+
## Parallel Execution
|
|
111
|
+
|
|
112
|
+
Pipeline steps can be grouped for parallel execution:
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
steps:
|
|
116
|
+
- name: phase-1
|
|
117
|
+
parallel:
|
|
118
|
+
- name: task-a
|
|
119
|
+
skill: skill-a
|
|
120
|
+
description: First independent task
|
|
121
|
+
- name: task-b
|
|
122
|
+
skill: skill-b
|
|
123
|
+
description: Second independent task
|
|
124
|
+
- name: phase-2
|
|
125
|
+
skill: next-step
|
|
126
|
+
depends_on: phase-1
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Parallel Rules
|
|
130
|
+
|
|
131
|
+
- Max 4 concurrent steps per parallel block (R009 hard cap)
|
|
132
|
+
- Steps within a parallel block MUST be independent
|
|
133
|
+
- `depends_on` enforces ordering between blocks
|
|
134
|
+
- Each parallel step is spawned as a separate Agent tool call in the SAME message
|
|
135
|
+
- Preserve the session permission posture by forwarding `mode: "bypassPermissions"` when applicable
|
|
136
|
+
- If any parallel step fails with `error: halt-and-report`, all remaining steps in the block are cancelled
|
|
137
|
+
- State tracking records each parallel step individually
|
|
138
|
+
|
|
139
|
+
### Parallel State Format
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"name": "phase-1",
|
|
144
|
+
"type": "parallel",
|
|
145
|
+
"status": "running",
|
|
146
|
+
"children": [
|
|
147
|
+
{"name": "task-a", "status": "completed", "duration_ms": 5000},
|
|
148
|
+
{"name": "task-b", "status": "running"}
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
109
153
|
## Error Handling
|
|
110
154
|
|
|
111
155
|
- Pipeline not found → list available pipelines with suggestion
|
|
@@ -19,11 +19,13 @@ Defines mandatory safety constraints for all pipeline, workflow, and iterative e
|
|
|
19
19
|
| Max iterations | 3 | 5 | worker-reviewer-pipeline |
|
|
20
20
|
| Max DAG nodes | 20 | 30 | dag-orchestration |
|
|
21
21
|
| Max parallel agents | 4 | 5 | R009 (all pipelines) |
|
|
22
|
+
| Max parallel steps | 4 | 4 | pipeline parallel blocks |
|
|
22
23
|
| Timeout per node | 300s | 600s | dag-orchestration nodes |
|
|
23
24
|
| Timeout per pipeline | 900s | 1800s | worker-reviewer-pipeline |
|
|
24
25
|
| Max retry count | 2 | 3 | Failure retry strategies |
|
|
25
26
|
| Max PR improvement items | 20 | 50 | pr-auto-improve |
|
|
26
27
|
| Max auto-improve items | 20 | 50 | omcodex:auto-improve |
|
|
28
|
+
| Max files per agent | 10 | 15 | All agent spawns (advisory) |
|
|
27
29
|
|
|
28
30
|
## Enforcement
|
|
29
31
|
|
|
@@ -82,6 +84,23 @@ When guards are triggered, they integrate with existing advisory systems:
|
|
|
82
84
|
| Timeout approaching (80%) | → warn user, suggest early termination |
|
|
83
85
|
| Hard cap hit | → force stop, report to user |
|
|
84
86
|
|
|
87
|
+
## Task Granularity Guard
|
|
88
|
+
|
|
89
|
+
Advisory guard for agent task scope. When a single agent is assigned too many files, it becomes a bottleneck in parallel execution.
|
|
90
|
+
|
|
91
|
+
| Signal | Default | Action |
|
|
92
|
+
|--------|---------|--------|
|
|
93
|
+
| Files per agent > 10 | Advisory warning | Suggest splitting by layer/domain |
|
|
94
|
+
| Files per agent > 15 | Hard warning | Require explicit user override |
|
|
95
|
+
|
|
96
|
+
Display:
|
|
97
|
+
```
|
|
98
|
+
[Guard] ⚠ Agent assigned {n} files (> 10) — consider splitting by layer
|
|
99
|
+
[Guard] 🛑 Agent assigned {n} files (> 15) — requires explicit override
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
This integrates with R009 Adaptive Parallel Splitting: if a stalled agent is detected AND it was assigned > 10 files, the splitting recommendation is stronger.
|
|
103
|
+
|
|
85
104
|
## Guard Configuration
|
|
86
105
|
|
|
87
106
|
Pipelines can override defaults (within hard caps):
|
|
@@ -157,6 +176,7 @@ Guard warnings appear inline:
|
|
|
157
176
|
| omcodex:auto-improve | Auto-improve item count limits |
|
|
158
177
|
| stuck-recovery | Guard triggers feed into stuck detection |
|
|
159
178
|
| model-escalation | Repeated failures trigger escalation advisory |
|
|
179
|
+
| task-decomposition | Subtask file counts validated against granularity guard thresholds |
|
|
160
180
|
|
|
161
181
|
## Checkpoint Gate Integration
|
|
162
182
|
|
|
@@ -10,7 +10,7 @@ effort: medium
|
|
|
10
10
|
|
|
11
11
|
## Purpose
|
|
12
12
|
|
|
13
|
-
After PR creation in the auto-dev release workflow, collect unaddressed findings and present actionable follow-up recommendations.
|
|
13
|
+
After PR creation in the auto-dev release workflow, collect unaddressed findings and present actionable follow-up recommendations. Genuine defects and process gaps are registered as GitHub issues automatically. Only code-changing immediate-action items require user confirmation.
|
|
14
14
|
|
|
15
15
|
## Workflow
|
|
16
16
|
|
|
@@ -55,54 +55,56 @@ Remove duplicates (same issue referenced from multiple sources). Categorize:
|
|
|
55
55
|
| **이슈 등록** | P3 이슈, LOW 검증 발견사항, 새 TODO, Medium PR 리뷰 발견사항 | 이슈로 등록 |
|
|
56
56
|
| **참고** | 이미 추적 중인 이슈, 외관 관련 메모 | 건너뛰기 |
|
|
57
57
|
|
|
58
|
+
### Auto-Register Genuine Defects (no-ask)
|
|
59
|
+
|
|
60
|
+
Before presenting the summary to the user, auto-register every "이슈 등록" item that is a genuine defect or process gap. No user confirmation is required for these.
|
|
61
|
+
|
|
62
|
+
Auto-register if any condition applies:
|
|
63
|
+
- Genuine defect: bug, regression, broken behavior, or incorrect output observed during verification
|
|
64
|
+
- Process gap: workflow hole, missing guard, or coverage gap surfaced by deep-verify or triage
|
|
65
|
+
- Coverage gap: missing test, documentation, or automation for a known scenario
|
|
66
|
+
|
|
67
|
+
Do not auto-register pure cosmetic/style preferences or subjective notes. When ambiguous, lean toward registering; missing a genuine defect costs a future session.
|
|
68
|
+
|
|
69
|
+
Use `gh issue create --repo baekenough/oh-my-customcodex` with `professor` plus a priority label. Default auto-registered items to `P3`; escalate to `P2` for MEDIUM+ severity.
|
|
70
|
+
|
|
58
71
|
### 3. Present to User
|
|
59
72
|
|
|
60
|
-
|
|
73
|
+
Auto-register genuine defects first. Then display follow-up summary showing what was already registered and what still needs a decision:
|
|
61
74
|
|
|
62
75
|
```
|
|
63
76
|
[Follow-up] {n}개 후속 작업 발견
|
|
64
77
|
|
|
78
|
+
━━━ 자동 등록 완료 ({count}개) ━━━
|
|
79
|
+
✓ #{issue_number} — {description} (이미 등록됨)
|
|
80
|
+
|
|
65
81
|
━━━ 즉시 실행 추천 ({count}개) ━━━
|
|
66
82
|
1. {description} — 출처: {source}
|
|
67
83
|
2. {description} — 출처: {source}
|
|
68
84
|
|
|
69
|
-
━━━ 이슈 등록 추천 ({count}개) ━━━
|
|
70
|
-
3. {description} — 출처: {source}
|
|
71
|
-
4. {description} — 출처: {source}
|
|
72
|
-
|
|
73
85
|
━━━ 참고 사항 ({count}개) ━━━
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
선택:
|
|
77
|
-
[A] 추천대로 실행 (즉시 실행
|
|
78
|
-
[B]
|
|
79
|
-
[C]
|
|
80
|
-
[D] 개별 선택 (항목별로 질문)
|
|
81
|
-
[E] 건너뛰기
|
|
86
|
+
3. {description} — 이미 #{issue_number}로 추적 중
|
|
87
|
+
|
|
88
|
+
즉시 실행 항목 선택:
|
|
89
|
+
[A] 추천대로 실행 (즉시 실행 항목 모두 실행)
|
|
90
|
+
[B] 개별 선택 (항목별로 질문)
|
|
91
|
+
[C] 건너뛰기
|
|
82
92
|
```
|
|
83
93
|
|
|
84
|
-
Use AskUserQuestion (or equivalent user prompt)
|
|
94
|
+
Use AskUserQuestion (or equivalent user prompt) only if there are "즉시 실행" items. If there are none, skip the prompt and complete automatically.
|
|
85
95
|
|
|
86
96
|
### 4. Process User Choice
|
|
87
97
|
|
|
88
98
|
**Option A (추천대로)**:
|
|
89
99
|
- "Immediate" items → delegate to appropriate specialist agents for execution
|
|
90
|
-
-
|
|
100
|
+
- Trackable defect/process-gap items were already auto-registered
|
|
91
101
|
- "Informational" items → skip
|
|
92
102
|
|
|
93
|
-
**Option B (
|
|
94
|
-
-
|
|
95
|
-
- Follow implementation patterns from the release workflow
|
|
96
|
-
|
|
97
|
-
**Option C (모두 이슈 등록)**:
|
|
98
|
-
- All Immediate + Trackable items → `gh issue create` with appropriate labels
|
|
99
|
-
- Label: `triage-needed` for the next workflow run; reserve `professor` for manual analysis requests
|
|
100
|
-
|
|
101
|
-
**Option D (개별 선택)**:
|
|
102
|
-
- For each item, ask: `[{n}] {description} — 실행(E) / 이슈(I) / 건너뛰기(S)?`
|
|
103
|
+
**Option B (개별 선택)**:
|
|
104
|
+
- For each immediate item, ask: `[{n}] {description} — 실행(E) / 건너뛰기(S)?`
|
|
103
105
|
- Process each per user choice
|
|
104
106
|
|
|
105
|
-
**Option
|
|
107
|
+
**Option C (건너뛰기)**:
|
|
106
108
|
- Skip all follow-up actions
|
|
107
109
|
- Complete workflow
|
|
108
110
|
|
|
@@ -118,21 +120,23 @@ Use AskUserQuestion (or equivalent user prompt) to get the choice.
|
|
|
118
120
|
|
|
119
121
|
## Issue Creation Template
|
|
120
122
|
|
|
121
|
-
|
|
123
|
+
For auto-registered genuine defects / process gaps:
|
|
122
124
|
|
|
123
125
|
```bash
|
|
124
126
|
gh issue create \
|
|
127
|
+
--repo baekenough/oh-my-customcodex \
|
|
125
128
|
--title "{간결한 설명}" \
|
|
126
|
-
--body "## 출처\n\nv{version} 릴리즈 워크플로우에서
|
|
129
|
+
--body "## 출처\n\nv{version} 릴리즈 워크플로우에서 자동 등록.\n\n## 컨텍스트\n\n{triage/verify에서의 상세 컨텍스트}\n\n## 권장 조치\n\n{권장 사항}" \
|
|
127
130
|
--label "professor"
|
|
128
131
|
```
|
|
129
132
|
|
|
130
|
-
Add priority label (`P1`, `P2`, `P3`) based on categorization.
|
|
133
|
+
Add priority label (`P1`, `P2`, `P3`) based on categorization. Default for auto-registered items: `P3`; escalate to `P2` for MEDIUM+ severity.
|
|
131
134
|
|
|
132
135
|
## Notes
|
|
133
136
|
|
|
134
137
|
- This skill runs in the main conversation context (via workflow skill step)
|
|
135
|
-
-
|
|
138
|
+
- Genuine defect/process gap items are auto-registered as issues without user confirmation
|
|
139
|
+
- Only "즉시 실행" code-changing items require user confirmation
|
|
136
140
|
- All file modifications delegated to specialist subagents per R010
|
|
137
141
|
- Issue creation uses `gh` CLI directly (read-only operation pattern)
|
|
138
142
|
- If no follow-up candidates found, report "No follow-up actions needed" and complete
|
|
@@ -35,6 +35,7 @@ A model allocation pattern that wraps implementation actions with stronger-model
|
|
|
35
35
|
| Phase | Recommended Model | Rationale |
|
|
36
36
|
|-------|------------------|-----------|
|
|
37
37
|
| Pre-reasoning (analyze/plan) | opus | Complex architectural reasoning, edge case detection |
|
|
38
|
+
| Pre-reasoning (Opus 4.7) | opus47 | Opus 4.7 makes fewer tool calls and reasons more deeply; pre-reasoning phase should include explicit tool batch planning |
|
|
38
39
|
| Action (implement/generate) | sonnet | Optimized for code generation, balanced cost |
|
|
39
40
|
| Post-verification (review/test) | sonnet or haiku | Structural verification, checklist validation |
|
|
40
41
|
|
|
@@ -77,3 +78,23 @@ This pattern is used by:
|
|
|
77
78
|
| Opus for everything | Wasteful, slow | Reserve opus for reasoning-heavy phases |
|
|
78
79
|
| Haiku for planning | Insufficient depth | Use opus for complex analysis |
|
|
79
80
|
| Skipping verification | False completion risk | Always include post-verification phase |
|
|
81
|
+
| Forcing frequent tool calls on Opus 4.7 | Fights model's natural reasoning-first tendency | Let Opus 4.7 reason; batch tool calls in pre-reasoning |
|
|
82
|
+
|
|
83
|
+
## Opus 4.7 Considerations
|
|
84
|
+
|
|
85
|
+
Opus 4.7 exhibits a distinct behavioral pattern: fewer tool calls with deeper reasoning per call. This affects how the sandwich pattern is applied:
|
|
86
|
+
|
|
87
|
+
| Aspect | Opus 4.6 | Opus 4.7 |
|
|
88
|
+
|--------|----------|----------|
|
|
89
|
+
| Tool call frequency | Moderate | Lower |
|
|
90
|
+
| Reasoning depth per call | Standard | Deeper |
|
|
91
|
+
| Pre-reasoning benefit | Plan what to check | Plan explicit tool batch — model will under-call if not guided |
|
|
92
|
+
|
|
93
|
+
### Pre-reasoning Adjustment for Opus 4.7
|
|
94
|
+
|
|
95
|
+
When using Opus 4.7 in the pre-reasoning phase:
|
|
96
|
+
1. **Explicitly enumerate tools needed** — Opus 4.7 may skip tool calls it deems unnecessary
|
|
97
|
+
2. **Batch tool-call plans upfront** — structure the action phase with a concrete tool sequence
|
|
98
|
+
3. **Prefer fewer, richer tool calls** — align with the model's natural tendency
|
|
99
|
+
|
|
100
|
+
Reference: [Best practices for using Claude Opus 4.7 with Claude Code](https://claude.com/blog/best-practices-for-using-claude-opus-4-7-with-claude-code)
|