@jetrabbits/agentic 0.3.0 → 0.3.2

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 (46) hide show
  1. package/AGENTS.md +17 -23
  2. package/CHANGELOG.md +19 -0
  3. package/MEMORY.md +41 -87
  4. package/Makefile +80 -22
  5. package/README.md +17 -7
  6. package/agentic +634 -124
  7. package/areas/devops/ci-cd/AGENTS.md +1 -15
  8. package/areas/devops/database-ops/AGENTS.md +1 -15
  9. package/areas/devops/devsecops/AGENTS.md +1 -15
  10. package/areas/devops/infrastructure/AGENTS.md +1 -15
  11. package/areas/devops/kubernetes/AGENTS.md +1 -15
  12. package/areas/devops/networking/AGENTS.md +1 -15
  13. package/areas/devops/observability/AGENTS.md +1 -15
  14. package/areas/devops/sre/AGENTS.md +1 -15
  15. package/areas/software/backend/AGENTS.md +1 -16
  16. package/areas/software/data-engineering/AGENTS.md +1 -16
  17. package/areas/software/frontend/AGENTS.md +1 -16
  18. package/areas/software/full-stack/AGENTS.md +1 -16
  19. package/areas/software/general/AGENTS.md +1 -7
  20. package/areas/software/mlops/AGENTS.md +1 -16
  21. package/areas/software/mobile/AGENTS.md +1 -16
  22. package/areas/software/platform/AGENTS.md +1 -16
  23. package/areas/software/qa/AGENTS.md +1 -16
  24. package/areas/software/security/AGENTS.md +1 -16
  25. package/areas/template/AGENTS.tmpl.md +1 -17
  26. package/docs/agentic-lifecycle.md +7 -3
  27. package/docs/agentic-stabilization/README.md +11 -7
  28. package/docs/agentic-token-minimization/README.md +7 -5
  29. package/docs/agentic-usage.md +12 -5
  30. package/docs/guidance-updates/2026-05-22-centralized-guidance-memory.md +19 -0
  31. package/docs/opencode_setup.md +7 -5
  32. package/docs/review-pipeline.md +82 -0
  33. package/extensions/claude/agents/instruction_reviewer.md +132 -0
  34. package/extensions/claude/agents/memory_curator.md +97 -0
  35. package/extensions/codex/AGENTS.override.md +17 -0
  36. package/extensions/codex/agents/instruction_reviewer.toml +139 -0
  37. package/extensions/codex/agents/memory_curator.toml +104 -0
  38. package/extensions/gemini/agents/instruction_reviewer.md +132 -0
  39. package/extensions/gemini/agents/memory_curator.md +97 -0
  40. package/extensions/opencode/agents/instruction_reviewer.md +133 -0
  41. package/extensions/opencode/agents/memory_curator.md +98 -0
  42. package/extensions/opencode/opencode.json +27 -3
  43. package/extensions/opencode/plugins/agent-model-mapper.ts +13 -2
  44. package/extensions/opencode/plugins/telegram-notification.ts +14 -14
  45. package/package.json +1 -1
  46. package/scripts/generate_how_to_use_agentic_gif.py +565 -0
package/AGENTS.md CHANGED
@@ -1,27 +1,17 @@
1
1
  # AGENTS — root guidance
2
2
 
3
- ## Dynamic loading of guidance
3
+ ## Dynamic guidance loading
4
4
 
5
- The set of loaded guidance is configurable per project and may change per task. Do not assume only statically listed
6
- files are available.
5
+ The loaded guidance set is project-specific and may change per task. Do not assume the statically listed files are
6
+ complete; first discover optional guidance under the target project's `.agent/` directory.
7
7
 
8
- Discover and load custom files from the target project when present:
8
+ Discover and load guidance in this order:
9
9
 
10
- ```text
11
- project_dir/
12
- └── .agent/
13
- ├── rules/
14
- ├── skills/
15
- ├── workflows/
16
- └── prompts/
17
- ```
18
-
19
- **Discovery patterns:**
20
-
21
- - `project_dir/.agent/rules/*`
22
- - `project_dir/.agent/skills/*`
23
- - `project_dir/.agent/workflows/*`
24
- - `project_dir/.agent/prompts/*`
10
+ 1. `.agent/*.md` — project baseline files, when present
11
+ 2. `.agent/rules/*.md` — all project rules
12
+ 3. `.agent/skills/*/SKILL.md` — only the skill matching the current task
13
+ 4. `.agent/workflows/*.md` — only the workflow matching the triggered command
14
+ 5. `.agent/prompts/*.md` — only when explicitly requested or referenced by loaded guidance
25
15
 
26
16
  Prefer relative paths in references inside markdown files.
27
17
 
@@ -66,13 +56,17 @@ Cross-cutting practices that apply to every project regardless of area.
66
56
  ### Documentation of Behavior Changes
67
57
 
68
58
  - Any behavior change captured in Markdown artifacts must be documented under the project `docs/` directory.
69
- - Use documentation paths that match the change type, for example `docs/<feature>/README.md` for feature behavior and `docs/incidents/<date>-<workload>-root-cause.md` for incident root cause reports.
70
- - Create or update the relevant `docs/` artifact in the same change set; do not leave behavior changes documented only in workflow outputs, tickets, or PR comments.
71
- - Apply the `product-owner` role to confirm that docs describe the user-facing behavior, acceptance criteria, and operational constraints of the change.
59
+ - Use documentation paths that match the change type, for example `docs/<feature>/README.md` for feature behavior and
60
+ `docs/incidents/<date>-<workload>-root-cause.md` for incident root cause reports.
61
+ - Create or update the relevant `docs/` artifact in the same change set; do not leave behavior changes documented only
62
+ in workflow outputs, tickets, or PR comments.
63
+ - Apply the `product-owner` role to confirm that docs describe the user-facing behavior, acceptance criteria, and
64
+ operational constraints of the change.
72
65
 
73
66
  ### MCP Memory Providers
74
67
 
75
- See [MEMORY.md](MEMORY.md) for the full protocol: provider roles, Context7 usage, MemPalace session-start queries, fact-writing triggers, tool call examples, and fallback order.
68
+ See [MEMORY.md](MEMORY.md) for the full protocol: provider roles, Context7 usage, MemPalace session-start queries,
69
+ fact-writing triggers, tool call examples, and fallback order.
76
70
 
77
71
  ### Code Style
78
72
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.3.2
4
+
5
+ - Added optional post-task specialist agents `instruction_reviewer` and `memory_curator` outside the mandatory SDLC role matrix.
6
+ - Added review pipeline guidance, `.reviews/<task-id>/` output conventions, and documented example instruction/memory review reports.
7
+ - Registered the new specialists in OpenCode role configuration and extended deterministic install/model-mapper coverage.
8
+
9
+ ## v0.3.1
10
+
11
+ - Added project-level OpenCode plugin settings in `.agentic.json`, including Telegram `botToken` and `chatId` when `telegram-notification` is enabled.
12
+ - Renamed the OpenCode optional plugin menu entry to `telegram-notification` while preserving the old `telegram-opencode-notifier` alias for compatibility.
13
+ - Changed `telegram-notification` runtime credentials to read from the target project's `.agentic.json` instead of Telegram environment variables.
14
+ - Removed Telegram message formatting entirely: notifications are sent as plain text without `parse_mode`, MarkdownV2 escaping, or markdown-to-Telegram conversion.
15
+ - Added interactive Context7 key mode selection with English menu entries for keyless setup or entering `CONTEXT7_API_KEY`.
16
+ - Removed the post-install Context7 "add API key later" path/example guidance because key selection now happens during setup.
17
+ - Extended `agent-model-mapper` model discovery to include active providers from `~/.local/share/opencode/auth.json` and non-deprecated models from `~/.cache/opencode/models.json`.
18
+ - Added a Confirm/Cancel save step after OpenCode role model selection before writing `.opencode/opencode.json`.
19
+ - Preserved OpenCode plugin settings across manifest replay/re-install so automated sync does not prompt again or lose project-level credentials.
20
+ - Updated OpenCode, Context7, Telegram, and lifecycle docs plus deterministic e2e coverage for the new configuration flow.
21
+
3
22
  ## v0.3.0
4
23
 
5
24
  - Added per-agent doctor timeouts with elapsed-time and exit-status logging while keeping install non-fatal.
package/MEMORY.md CHANGED
@@ -1,113 +1,67 @@
1
1
  # MEMORY — MCP context providers
2
2
 
3
- Guidance for using MemPalace and Context7 MCP servers across all agent sessions.
4
-
5
- ---
6
-
7
- ## Provider roles
8
-
9
- | Provider | Purpose |
10
- |---|---|
11
- | **MemPalace** | Project-specific knowledge: architecture decisions, domain rules, conventions, known issues, integration contracts |
12
- | **Context7** | Framework, library, SDK, and API reference documentation |
13
-
14
- Use both when available. They are complementary, not interchangeable.
15
-
16
- ---
3
+ Use MCP context only when it improves accuracy. Keep searches narrow.
17
4
 
18
5
  ## Context7
19
6
 
20
- - Use Context7 for framework, library, SDK, API, and setup documentation before relying on model memory.
21
- - Resolve the library or framework identity first, then request focused docs for the exact task and version when version matters.
22
- - If Context7 is unavailable, state that explicitly and fall back to local docs or official project documentation.
23
-
24
- ---
7
+ - Use Context7 for external framework, library, SDK, API, and setup docs.
8
+ - Resolve the exact package/framework first; ask for focused docs only.
9
+ - If Context7 is unavailable, use local `docs/**`, then official upstream docs.
25
10
 
26
11
  ## MemPalace
27
12
 
28
- ### Loading context session start
29
-
30
- Query MemPalace **before** reading any source files. Orientation queries to run at the start of every session:
13
+ MemPalace stores project memory by wing. The current project wing is the sanitized project directory basename. Cross-project Markdown knowledge belongs in `shared_docs`.
31
14
 
32
- ```
33
- mempalace_search({ "query": "project architecture decisions" })
34
- mempalace_search({ "query": "domain entities and relationships" })
35
- mempalace_search({ "query": "known constraints and non-negotiables" })
36
- ```
15
+ ### Cheap search pattern
37
16
 
38
- Before touching any subsystem, query for accumulated knowledge about it:
17
+ Do not run broad startup searches. Search only for the task at hand:
39
18
 
40
- ```
41
- mempalace_search({ "query": "<module or service name> design decisions" })
42
- mempalace_search({ "query": "<module or service name> known issues" })
19
+ ```json
20
+ mempalace_search({
21
+ "query": "short exact keywords",
22
+ "wing": "<current_project_wing>",
23
+ "limit": 3,
24
+ "max_distance": 0.55
25
+ })
43
26
  ```
44
27
 
45
- ### Writing facts — when to store
28
+ Rules:
46
29
 
47
- Store a fact **immediately** when you discover or confirm any of the following. Do not wait until the end of the session — subsequent steps in the same session benefit from facts stored earlier.
30
+ - Keep `query` short; put background in `context` only if needed.
31
+ - Use `wing` whenever you know it.
32
+ - Use `limit: 3` by default; raise it only when evidence is thin.
33
+ - Use `max_distance` around `0.4-0.6` for precise fact lookup.
34
+ - Search `shared_docs` only for reusable docs or cross-project behavior.
35
+ - Call `mempalace_list_wings` or `mempalace_list_rooms` only when the wing or room is unknown.
36
+ - Add `room` only after confirming the room name.
48
37
 
49
- | Trigger | What to store |
50
- |---|---|
51
- | Architecture decision made or confirmed | Decision, alternatives considered, rationale |
52
- | Non-obvious module dependency or integration point | What connects to what and why |
53
- | Business rule or domain constraint clarified | The rule in plain language, where it is enforced |
54
- | Recurring bug pattern or root cause identified | Pattern description, affected area, mitigation |
55
- | API contract or data shape locked down | Shape, version, owning service |
56
- | Performance characteristic or known bottleneck noted | Where, measured or estimated, relevant thresholds |
57
- | Convention or team agreement not captured in docs | The agreement and its scope |
58
- | Environment or deployment constraint discovered | What the constraint is and which target it affects |
38
+ ### Writing facts
59
39
 
60
- ### Writing facts examples
40
+ Use `mempalace_store` proactively when a durable fact is discovered, decided, or corrected. Do not wait for a later search to make project knowledge persistent.
61
41
 
62
- ```
63
- mempalace_store({
64
- "type": "architecture_decision",
65
- "title": "Auth uses JWT with 15-min expiry, refresh via Redis",
66
- "body": "Decided in task TASK-88. Rationale: stateless verification at API gateway; Redis holds refresh token allowlist for revocation support.",
67
- "tags": ["auth", "jwt", "redis", "architecture"]
68
- })
69
- ```
42
+ Store only durable, self-contained facts:
70
43
 
71
- ```
72
- mempalace_store({
73
- "type": "domain_rule",
74
- "title": "Orders cannot transition from CANCELLED back to any active state",
75
- "body": "Enforced in OrderStateMachine.apply(). No UI path or API endpoint bypasses this; confirmed with product owner in TASK-102.",
76
- "tags": ["orders", "state-machine", "domain-rule"]
77
- })
78
- ```
44
+ - architecture decisions and rationale;
45
+ - domain rules and API/data contracts;
46
+ - non-obvious integrations or constraints;
47
+ - known issues, bottlenecks, and mitigations;
48
+ - team conventions not already captured in `docs/**`.
79
49
 
80
- ```
81
- mempalace_store({
82
- "type": "known_issue",
83
- "title": "ReportService N+1 on invoice line items — not yet fixed",
84
- "body": "Affects reports with >50 invoices. Tracked in TASK-119. Workaround: batch fetch via InvoiceRepository.findByReportId().",
85
- "tags": ["reporting", "performance", "n+1"]
86
- })
87
- ```
50
+ Store one fact per call, tagged with project/module/domain nouns. Write project facts to the current project wing. Write to `shared_docs` only when the knowledge is intentionally reusable across projects.
88
51
 
89
- ```
52
+ ```json
90
53
  mempalace_store({
91
- "type": "convention",
92
- "title": "Feature flags go through FeatureToggleService — no direct env checks in domain code",
93
- "body": "Established to keep domain layer portable. All flag reads must go through FeatureToggleService.isEnabled(flag, context).",
94
- "tags": ["conventions", "feature-flags"]
54
+ "wing": "<current_project_wing>",
55
+ "room": "<known_room_if_confirmed>",
56
+ "text": "Durable fact stated as a complete sentence with enough context to stand alone.",
57
+ "tags": ["project", "module", "domain"]
95
58
  })
96
59
  ```
97
60
 
98
- ### Quality bar for stored facts
99
-
100
- - **Concrete, not vague.** "Auth uses JWT" is a fact. "Auth is secure" is not.
101
- - **Self-contained.** The fact must make sense without the surrounding chat context.
102
- - **Tagged for retrieval.** Include module names, domain nouns, and problem-type tags.
103
- - **One fact per store call.** Do not bundle multiple unrelated facts into one entry.
104
-
105
- ---
106
-
107
- ## Fallback order
61
+ ## Fallback
108
62
 
109
- When MCP providers are unavailable, fall back in this order:
63
+ If MCP providers are unavailable, use:
110
64
 
111
- 1. Local `docs/**` in the project repository
112
- 2. Official upstream documentation
113
- 3. Model knowledge (least preferred state explicitly when used)
65
+ 1. local `docs/**`;
66
+ 2. official upstream documentation;
67
+ 3. model knowledge, explicitly marked as fallback.
package/Makefile CHANGED
@@ -1,11 +1,30 @@
1
- .PHONY: help install dev test test-cli test-tui test-cross test-doctor test-markers test-opencode-plugins test-telegram-plugin test-real-agent-doctor test-real-blackbox test-real-opencode-mapper test-coverage lint fmt clean build assess-areas
1
+ .PHONY: help install dev test test-all test-cli test-tui test-cross test-doctor test-markers test-opencode-plugins test-telegram-plugin test-ubuntu-blackbox test-real-agent-doctor test-real-blackbox test-real-blackbox-codex test-real-blackbox-opencode test-real-blackbox-telegram test-real-opencode-mapper test-coverage _test-coverage-steps lint fmt clean build assess-areas
2
+
3
+ define timed_step
4
+ @label='$(1)'; \
5
+ start=$$(date +%s); \
6
+ timestamp=$$(date '+%Y-%m-%d %H:%M:%S'); \
7
+ printf '%s [make-timing] START %s\n' "$$timestamp" "$$label"; \
8
+ $(2); \
9
+ status=$$?; \
10
+ end=$$(date +%s); \
11
+ elapsed=$$((end - start)); \
12
+ timestamp=$$(date '+%Y-%m-%d %H:%M:%S'); \
13
+ if [ "$$status" -eq 0 ]; then \
14
+ printf '%s [make-timing] OK %s elapsed=%ss\n' "$$timestamp" "$$label" "$$elapsed"; \
15
+ else \
16
+ printf '%s [make-timing] FAIL %s elapsed=%ss exit=%s\n' "$$timestamp" "$$label" "$$elapsed" "$$status"; \
17
+ fi; \
18
+ exit "$$status"
19
+ endef
2
20
 
3
21
  help:
4
22
  @printf '%s\n' \
5
23
  "Available targets:" \
6
24
  " install Install local development prerequisites" \
7
25
  " dev Show local development entrypoints" \
8
- " test Run end-to-end tests (all groups)" \
26
+ " test Run fast deterministic end-to-end tests" \
27
+ " test-all Run fast tests, real blackbox, and coverage" \
9
28
  " test-cli Run CLI end-to-end tests" \
10
29
  " test-tui Run TUI end-to-end tests" \
11
30
  " test-cross Run cross-mode end-to-end tests" \
@@ -13,8 +32,12 @@ help:
13
32
  " test-markers Run generated marker and idempotency tests" \
14
33
  " test-opencode-plugins Run OpenCode plugin deterministic tests" \
15
34
  " test-telegram-plugin Run Telegram plugin deterministic tests" \
35
+ " test-ubuntu-blackbox Run make test in a clean Docker Ubuntu image" \
16
36
  " test-real-agent-doctor Run real agent doctor checks" \
17
37
  " test-real-blackbox Run real Codex/OpenCode/Telegram blackbox tests" \
38
+ " test-real-blackbox-codex Run real Codex blackbox test" \
39
+ " test-real-blackbox-opencode Run real OpenCode blackbox test" \
40
+ " test-real-blackbox-telegram Run real OpenCode Telegram blackbox test" \
18
41
  " test-real-opencode-mapper Run real OpenCode mapper input blackbox" \
19
42
  " test-coverage Run traced e2e coverage for agentic" \
20
43
  " lint Run prompt and catalog validation" \
@@ -30,48 +53,83 @@ dev:
30
53
  @printf '%s\n' "Use ./agentic tui or ./agentic install ..."
31
54
 
32
55
  test:
33
- bash tests/e2e/cli.e2e.sh
34
- bash tests/e2e/tui.e2e.sh
35
- bash tests/e2e/cross.e2e.sh
36
- bash tests/e2e/doctor.e2e.sh
37
- bash tests/e2e/markers.e2e.sh
38
- bash tests/e2e/opencode_plugins.e2e.sh
39
- bash tests/e2e/telegram_plugin.e2e.sh
40
- bash tests/e2e/real_agent_blackbox.e2e.sh
41
- $(MAKE) test-coverage
56
+ $(call timed_step,test-cli,bash tests/e2e/cli.e2e.sh)
57
+ $(call timed_step,test-tui,bash tests/e2e/tui.e2e.sh)
58
+ $(call timed_step,test-cross,bash tests/e2e/cross.e2e.sh)
59
+ $(call timed_step,test-opencode-plugins,bash tests/e2e/opencode_plugins.e2e.sh)
60
+ $(call timed_step,test-telegram-plugin,bash tests/e2e/telegram_plugin.e2e.sh)
61
+
62
+ test-all:
63
+ $(call timed_step,test,$(MAKE) test)
64
+ $(call timed_step,test-doctor,bash tests/e2e/doctor.e2e.sh)
65
+ $(call timed_step,test-markers,bash tests/e2e/markers.e2e.sh)
66
+ $(call timed_step,test-real-blackbox-codex,AGENTIC_REAL_BLACKBOX_ONLY=codex bash tests/e2e/real_agent_blackbox.e2e.sh)
67
+ $(call timed_step,test-real-blackbox-opencode,AGENTIC_REAL_BLACKBOX_ONLY=opencode bash tests/e2e/real_agent_blackbox.e2e.sh)
68
+ $(call timed_step,test-real-opencode-mapper,AGENTIC_REAL_BLACKBOX_ONLY=opencode-mapper bash tests/e2e/real_agent_blackbox.e2e.sh)
69
+ $(call timed_step,test-real-blackbox-telegram,AGENTIC_REAL_BLACKBOX_ONLY=telegram bash tests/e2e/real_agent_blackbox.e2e.sh)
70
+ $(call timed_step,test-coverage,$(MAKE) test-coverage)
42
71
 
43
72
  test-cli:
44
- bash tests/e2e/cli.e2e.sh
73
+ $(call timed_step,test-cli,bash tests/e2e/cli.e2e.sh)
45
74
 
46
75
  test-tui:
47
- bash tests/e2e/tui.e2e.sh
76
+ $(call timed_step,test-tui,bash tests/e2e/tui.e2e.sh)
48
77
 
49
78
  test-cross:
50
- bash tests/e2e/cross.e2e.sh
79
+ $(call timed_step,test-cross,bash tests/e2e/cross.e2e.sh)
51
80
 
52
81
  test-doctor:
53
- bash tests/e2e/doctor.e2e.sh
82
+ $(call timed_step,test-doctor,bash tests/e2e/doctor.e2e.sh)
54
83
 
55
84
  test-markers:
56
- bash tests/e2e/markers.e2e.sh
85
+ $(call timed_step,test-markers,bash tests/e2e/markers.e2e.sh)
57
86
 
58
87
  test-opencode-plugins:
59
- bash tests/e2e/opencode_plugins.e2e.sh
88
+ $(call timed_step,test-opencode-plugins,bash tests/e2e/opencode_plugins.e2e.sh)
60
89
 
61
90
  test-telegram-plugin:
62
- bash tests/e2e/telegram_plugin.e2e.sh
91
+ $(call timed_step,test-telegram-plugin,bash tests/e2e/telegram_plugin.e2e.sh)
92
+
93
+ test-ubuntu-blackbox:
94
+ $(call timed_step,test-ubuntu-blackbox,bash tests/e2e/ubuntu_blackbox.e2e.sh)
63
95
 
64
96
  test-real-agent-doctor:
65
- bash tests/e2e/real_agent_doctor.e2e.sh
97
+ $(call timed_step,test-real-agent-doctor,bash tests/e2e/real_agent_doctor.e2e.sh)
66
98
 
67
99
  test-real-blackbox:
68
- bash tests/e2e/real_agent_blackbox.e2e.sh
100
+ $(call timed_step,test-real-blackbox-codex,AGENTIC_REAL_BLACKBOX_ONLY=codex bash tests/e2e/real_agent_blackbox.e2e.sh)
101
+ $(call timed_step,test-real-blackbox-opencode,AGENTIC_REAL_BLACKBOX_ONLY=opencode bash tests/e2e/real_agent_blackbox.e2e.sh)
102
+ $(call timed_step,test-real-opencode-mapper,AGENTIC_REAL_BLACKBOX_ONLY=opencode-mapper bash tests/e2e/real_agent_blackbox.e2e.sh)
103
+ $(call timed_step,test-real-blackbox-telegram,AGENTIC_REAL_BLACKBOX_ONLY=telegram bash tests/e2e/real_agent_blackbox.e2e.sh)
104
+
105
+ test-real-blackbox-codex:
106
+ $(call timed_step,test-real-blackbox-codex,AGENTIC_REAL_BLACKBOX_ONLY=codex bash tests/e2e/real_agent_blackbox.e2e.sh)
107
+
108
+ test-real-blackbox-opencode:
109
+ $(call timed_step,test-real-blackbox-opencode,AGENTIC_REAL_BLACKBOX_ONLY=opencode bash tests/e2e/real_agent_blackbox.e2e.sh)
110
+
111
+ test-real-blackbox-telegram:
112
+ $(call timed_step,test-real-blackbox-telegram,AGENTIC_REAL_BLACKBOX_ONLY=telegram bash tests/e2e/real_agent_blackbox.e2e.sh)
69
113
 
70
114
  test-real-opencode-mapper:
71
- AGENTIC_REAL_BLACKBOX_ONLY=opencode-mapper bash tests/e2e/real_agent_blackbox.e2e.sh
115
+ $(call timed_step,test-real-opencode-mapper,AGENTIC_REAL_BLACKBOX_ONLY=opencode-mapper bash tests/e2e/real_agent_blackbox.e2e.sh)
72
116
 
73
117
  test-coverage:
74
- AGENTIC_COVERAGE_TRACE_FILE=$$(mktemp /tmp/agentic-coverage.XXXXXX) bash -c 'AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/agentic.e2e.sh >/tmp/agentic-coverage-agentic.log 2>&1 && AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/tui.e2e.sh >/tmp/agentic-coverage-tui.log 2>&1 && AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/cross.e2e.sh >/tmp/agentic-coverage-cross.log 2>&1 && AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/markers.e2e.sh >/tmp/agentic-coverage-markers.log 2>&1 && AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/cli.e2e.sh >/tmp/agentic-coverage-cli.log 2>&1 && AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/doctor.e2e.sh >/tmp/agentic-coverage-doctor.log 2>&1 && bash tests/e2e/coverage_parse.sh "$$AGENTIC_COVERAGE_TRACE_FILE"'
118
+ @if [ -n "$${AGENTIC_COVERAGE_TRACE_FILE:-}" ]; then \
119
+ trace_file="$$AGENTIC_COVERAGE_TRACE_FILE"; \
120
+ else \
121
+ trace_file="$$(mktemp /tmp/agentic-coverage.XXXXXX)"; \
122
+ fi; \
123
+ $(MAKE) _test-coverage-steps AGENTIC_COVERAGE_TRACE_FILE="$$trace_file"
124
+
125
+ _test-coverage-steps:
126
+ $(call timed_step,test-coverage-agentic,AGENTIC_COVERAGE_TRACE_FILE="$(AGENTIC_COVERAGE_TRACE_FILE)" AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/agentic.e2e.sh >/tmp/agentic-coverage-agentic.log 2>&1)
127
+ $(call timed_step,test-coverage-tui,AGENTIC_COVERAGE_TRACE_FILE="$(AGENTIC_COVERAGE_TRACE_FILE)" AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/tui.e2e.sh >/tmp/agentic-coverage-tui.log 2>&1)
128
+ $(call timed_step,test-coverage-cross,AGENTIC_COVERAGE_TRACE_FILE="$(AGENTIC_COVERAGE_TRACE_FILE)" AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/cross.e2e.sh >/tmp/agentic-coverage-cross.log 2>&1)
129
+ $(call timed_step,test-coverage-markers,AGENTIC_COVERAGE_TRACE_FILE="$(AGENTIC_COVERAGE_TRACE_FILE)" AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/markers.e2e.sh >/tmp/agentic-coverage-markers.log 2>&1)
130
+ $(call timed_step,test-coverage-cli,AGENTIC_COVERAGE_TRACE_FILE="$(AGENTIC_COVERAGE_TRACE_FILE)" AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/cli.e2e.sh >/tmp/agentic-coverage-cli.log 2>&1)
131
+ $(call timed_step,test-coverage-doctor,AGENTIC_COVERAGE_TRACE_FILE="$(AGENTIC_COVERAGE_TRACE_FILE)" AGENTIC_TEST_CLI="$(CURDIR)/tests/e2e/coverage_shim.sh" bash tests/e2e/doctor.e2e.sh >/tmp/agentic-coverage-doctor.log 2>&1)
132
+ $(call timed_step,test-coverage-parse,bash tests/e2e/coverage_parse.sh "$(AGENTIC_COVERAGE_TRACE_FILE)")
75
133
 
76
134
  lint:
77
135
  bash -n agentic
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Agent Intelligence Configuration (agentic)
2
2
 
3
- > **18 areas · 10 Software specs · 8 DevOps specs · 7 SDLC agents · 105+ skills · 73+ workflows**
3
+ > **18 areas · 10 Software specs · 8 DevOps specs · 7 SDLC agents + 2 specialists · 105+ skills · 73+ workflows**
4
4
 
5
5
  A unified catalog of agentic specializations and the `agentic` CLI. Install orchestrator-ready rules, skills, workflows,
6
6
  and prompts into any project — and run a full SDLC agent team out of the box.
@@ -77,14 +77,14 @@ agent-guides/
77
77
  │ └── database-ops/ # PostgreSQL, Redis, migrations, backup/restore
78
78
  ├── extensions/
79
79
  │ ├── opencode/ # OpenCode agent definitions, commands, skills
80
- │ │ └── agents/ # 7 SDLC agents for .opencode/agents/
80
+ │ │ └── agents/ # SDLC agents + optional specialists for .opencode/agents/
81
81
  │ ├── claude/ # Claude Code configs
82
- │ │ └── agents/ # 7 SDLC agents for .claude/agents/
82
+ │ │ └── agents/ # SDLC agents + optional specialists for .claude/agents/
83
83
  │ ├── antigravity/ # Antigravity platform configs
84
84
  │ ├── codex/ # Codex custom agents and override configs
85
- │ │ └── agents/ # 7 SDLC agents for .codex/agents/
85
+ │ │ └── agents/ # SDLC agents + optional specialists for .codex/agents/
86
86
  │ └── gemini/ # Gemini-specific configs
87
- │ │ └── agents/ # 7 SDLC agents for .gemini/agents/
87
+ │ │ └── agents/ # SDLC agents + optional specialists for .gemini/agents/
88
88
  ├── areas/template/ # Authoring templates — start here for new content
89
89
  ├── docs/ # Setup and usage guides
90
90
  ├── AGENTS.md # Root agent guidance (loaded into every project)
@@ -140,8 +140,8 @@ guidance bundle.
140
140
 
141
141
  ## SDLC Agent team
142
142
 
143
- The same 7-agent team works across **Claude Code**, **OpenCode**, **Codex**, and any tool that supports agent or
144
- subagent files.
143
+ The same 7-agent SDLC team works across **Claude Code**, **OpenCode**, **Codex**, and any tool that supports agent or
144
+ subagent files. Agentic also ships optional post-task review specialists for instruction quality and memory hygiene.
145
145
 
146
146
  | Agent | Role | Invoke when |
147
147
  |:------------------|:-----------------------------------------------|:----------------------------------------------|
@@ -156,6 +156,16 @@ subagent files.
156
156
  Each agent has a `vibe` (one-line personality), `Identity`, `Communication Style`, `Success Metrics`, and explicit
157
157
  `Boundaries` — so roles never overlap and handoffs are always documented.
158
158
 
159
+ Optional specialist agents run outside the mandatory SDLC role matrix:
160
+
161
+ | Agent | Role | Invoke when |
162
+ |:-----------------------|:-------------------------------------------------|:-------------------------------------------------|
163
+ | `instruction_reviewer` | Post-task instruction effectiveness review | Instructions, tool use, or role guidance changed |
164
+ | `memory_curator` | Post-task memory hygiene recommendations | Durable facts or memory quality need review |
165
+
166
+ See [Review Pipeline](docs/review-pipeline.md) for the guidance-mode pipeline and `.reviews/<task-id>/` output
167
+ convention.
168
+
159
169
  | Platform | Agent path | Format | Guide |
160
170
  |:------------|:--------------------------------|:-------------------------------|:------------------------------------------------------------------------------------------------|
161
171
  | Claude Code | `project/.claude/agents/*.md` | Markdown with YAML frontmatter | [Claude Code subagents](https://docs.claude.com/en/api/agent-sdk/subagents) |