@jetrabbits/agentic 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/AGENTS.md +8 -0
  2. package/CHANGELOG.md +3 -0
  3. package/Makefile +21 -5
  4. package/README.md +17 -4
  5. package/agentic +78 -7
  6. package/areas/devops/ci-cd/workflows/onboard-repo.md +29 -0
  7. package/areas/devops/ci-cd/workflows/pipeline-debug.md +26 -0
  8. package/areas/devops/ci-cd/workflows/release-pipeline.md +53 -0
  9. package/areas/devops/database-ops/workflows/backup-verify.md +27 -0
  10. package/areas/devops/database-ops/workflows/db-incident.md +30 -0
  11. package/areas/devops/devsecops/workflows/policy-onboard.md +34 -0
  12. package/areas/devops/devsecops/workflows/security-scan-pipeline.md +33 -0
  13. package/areas/devops/infrastructure/workflows/destroy-environment.md +31 -0
  14. package/areas/devops/infrastructure/workflows/drift-remediation.md +29 -0
  15. package/areas/devops/infrastructure/workflows/module-development.md +32 -0
  16. package/areas/devops/infrastructure/workflows/provision-environment.md +29 -0
  17. package/areas/devops/kubernetes/workflows/cluster-bootstrap.md +36 -0
  18. package/areas/devops/kubernetes/workflows/debug-workload.md +29 -0
  19. package/areas/devops/kubernetes/workflows/onboard-service.md +35 -0
  20. package/areas/devops/kubernetes/workflows/upgrade-cluster.md +30 -0
  21. package/areas/devops/networking/workflows/onboard-ingress.md +27 -0
  22. package/areas/devops/networking/workflows/service-mesh-onboard.md +27 -0
  23. package/areas/devops/observability/workflows/alert-investigation.md +29 -0
  24. package/areas/devops/observability/workflows/observability-stack-setup.md +33 -0
  25. package/areas/devops/observability/workflows/onboard-service-monitoring.md +31 -0
  26. package/areas/devops/sre/workflows/incident-response.md +48 -0
  27. package/areas/devops/sre/workflows/postmortem.md +32 -0
  28. package/areas/devops/sre/workflows/slo-review.md +35 -1
  29. package/areas/software/backend/workflows/add-migration.md +33 -0
  30. package/areas/software/backend/workflows/create-endpoint.md +40 -0
  31. package/areas/software/backend/workflows/debug-issue.md +31 -0
  32. package/areas/software/backend/workflows/develop-epic.md +37 -0
  33. package/areas/software/backend/workflows/develop-feature.md +44 -0
  34. package/areas/software/backend/workflows/refactor-module.md +35 -0
  35. package/areas/software/backend/workflows/test-feature.md +30 -0
  36. package/areas/software/data-engineering/workflows/backfill-data.md +25 -0
  37. package/areas/software/data-engineering/workflows/data-quality-incident.md +31 -0
  38. package/areas/software/data-engineering/workflows/lineage-trace.md +25 -0
  39. package/areas/software/data-engineering/workflows/new-model.md +30 -0
  40. package/areas/software/data-engineering/workflows/schema-migration.md +29 -0
  41. package/areas/software/frontend/workflows/a11y-fix.md +30 -0
  42. package/areas/software/frontend/workflows/bundle-analyze.md +28 -0
  43. package/areas/software/frontend/workflows/release-prep.md +33 -0
  44. package/areas/software/frontend/workflows/scaffold-component.md +32 -0
  45. package/areas/software/frontend/workflows/visual-regression.md +32 -0
  46. package/areas/software/full-stack/workflows/backend-project-full-cycle.md +47 -2
  47. package/areas/software/full-stack/workflows/debug-issue.md +29 -0
  48. package/areas/software/full-stack/workflows/develop-feature.md +38 -0
  49. package/areas/software/full-stack/workflows/feature-implementation-flow.md +38 -0
  50. package/areas/software/full-stack/workflows/testing-ci-pipeline.md +30 -0
  51. package/areas/software/general/workflows/code-review-workflow.md +31 -0
  52. package/areas/software/general/workflows/development-cycle-workflow.md +38 -0
  53. package/areas/software/general/workflows/project-setup-workflow.md +38 -0
  54. package/areas/software/mlops/workflows/champion-challenger.md +29 -0
  55. package/areas/software/mlops/workflows/deploy-endpoint.md +30 -0
  56. package/areas/software/mlops/workflows/evaluate-model.md +28 -0
  57. package/areas/software/mlops/workflows/model-incident.md +29 -0
  58. package/areas/software/mlops/workflows/train-experiment.md +25 -0
  59. package/areas/software/mobile/workflows/crash-triage.md +28 -0
  60. package/areas/software/mobile/workflows/device-testing.md +27 -0
  61. package/areas/software/mobile/workflows/ota-update.md +25 -0
  62. package/areas/software/mobile/workflows/release-build.md +30 -0
  63. package/areas/software/mobile/workflows/store-submission.md +29 -0
  64. package/areas/software/platform/workflows/cost-audit.md +28 -0
  65. package/areas/software/platform/workflows/deploy-production.md +30 -0
  66. package/areas/software/platform/workflows/drift-check.md +29 -0
  67. package/areas/software/platform/workflows/incident-response.md +33 -0
  68. package/areas/software/platform/workflows/provision-env.md +36 -0
  69. package/areas/software/qa/workflows/flakiness-investigation.md +30 -0
  70. package/areas/software/qa/workflows/performance-audit.md +29 -0
  71. package/areas/software/qa/workflows/regression-suite.md +28 -0
  72. package/areas/software/qa/workflows/smoke-test.md +31 -0
  73. package/areas/software/qa/workflows/test-coverage-report.md +28 -0
  74. package/areas/software/security/workflows/compliance-report.md +27 -0
  75. package/areas/software/security/workflows/pen-test-sim.md +28 -0
  76. package/areas/software/security/workflows/secret-rotation.md +33 -2
  77. package/areas/software/security/workflows/security-scan.md +29 -0
  78. package/areas/software/security/workflows/threat-model-review.md +30 -0
  79. package/docs/agentic-usage.md +1 -1
  80. package/docs/catalog.schema.json +5 -1
  81. package/docs/opencode_setup.md +10 -0
  82. package/docs/site/README.md +15 -1
  83. package/docs/site/app.js +68 -0
  84. package/docs/site/catalog.json +74 -1
  85. package/docs/site/index.html +5 -1
  86. package/docs/site/styles.css +52 -4
  87. package/extensions/opencode/opencode.json +0 -1
  88. package/extensions/opencode/profiles/githubcopilot/opencode.json +1 -2
  89. package/extensions/opencode/profiles/openai/opencode.json +20 -20
  90. package/package.json +1 -1
  91. package/scripts/build_docs_catalog.py +13 -1
  92. package/scripts/sync_workflow_diagrams.py +199 -0
  93. package/extensions/opencode/plugins/sound-notification.ts +0 -13
@@ -73,5 +73,41 @@ quality-gates:
73
73
  - **Output:** environment URL published in PR
74
74
  - **Done when:** team has access and teardown instructions
75
75
 
76
+ ## Agent Interaction Diagram
77
+
78
+ <!-- agent-diagram:start -->
79
+ ```mermaid
80
+ flowchart TD
81
+ start(["Start /provision-env"])
82
+ role_1["team-lead"]
83
+ role_2["developer"]
84
+ role_3["qa"]
85
+ role_4["pm"]
86
+ step_1["1. Validate Prerequisites"]
87
+ step_2["2. Plan Infrastructure"]
88
+ step_3["3. Estimate Cost"]
89
+ step_4["4. Apply Infrastructure"]
90
+ step_5["5. Configure DNS & Ingress"]
91
+ step_6["6. Seed & Smoke Test"]
92
+ step_7["7. Report"]
93
+ exit(["Smoke tests green + URL published = environment ready for use."])
94
+ start --> step_1
95
+ step_1 --> step_2
96
+ step_2 --> step_3
97
+ step_3 --> step_4
98
+ step_4 --> step_5
99
+ step_5 --> step_6
100
+ step_6 --> step_7
101
+ step_7 --> exit
102
+ role_1 -. owns .-> step_1
103
+ role_2 -. owns .-> step_2
104
+ role_2 -. owns .-> step_3
105
+ role_2 -. owns .-> step_4
106
+ role_2 -. owns .-> step_5
107
+ role_3 -. owns .-> step_6
108
+ role_4 -. owns .-> step_7
109
+ ```
110
+ <!-- agent-diagram:end -->
111
+
76
112
  ## Exit
77
113
  Smoke tests green + URL published = environment ready for use.
@@ -59,5 +59,35 @@ quality-gates:
59
59
  - **Output:** closure note in flakiness log; systemic action item if needed
60
60
  - **Done when:** flakiness log updated; test unquarantined or deleted
61
61
 
62
+ ## Agent Interaction Diagram
63
+
64
+ <!-- agent-diagram:start -->
65
+ ```mermaid
66
+ flowchart TD
67
+ start(["Start /flakiness-investigation"])
68
+ role_1["qa"]
69
+ role_2["developer"]
70
+ role_3["team-lead"]
71
+ step_1["1. Collect Failure Signals & Patterns"]
72
+ step_2["2. Reproduce & Classify Root Cause"]
73
+ step_3["3. Stabilization Fix"]
74
+ step_4["4. Stress Re-run & Quarantine Decision"]
75
+ step_5["5. Policy Review & Closure"]
76
+ exit(["Stable test in CI + root cause documented + log updated = investigation clo..."])
77
+ start --> step_1
78
+ step_1 --> step_2
79
+ step_2 --> step_3
80
+ step_3 --> step_4
81
+ step_4 --> step_5
82
+ step_5 --> exit
83
+ role_1 -. owns .-> step_1
84
+ role_1 -. owns .-> step_2
85
+ role_2 -. owns .-> step_2
86
+ role_2 -. owns .-> step_3
87
+ role_1 -. owns .-> step_4
88
+ role_3 -. owns .-> step_5
89
+ ```
90
+ <!-- agent-diagram:end -->
91
+
62
92
  ## Exit
63
93
  Stable test in CI + root cause documented + log updated = investigation closed.
@@ -55,5 +55,34 @@ quality-gates:
55
55
  - **Output:** `performance_report.md`; remediation backlog items created
56
56
  - **Done when:** report complete; backlog items assigned
57
57
 
58
+ ## Agent Interaction Diagram
59
+
60
+ <!-- agent-diagram:start -->
61
+ ```mermaid
62
+ flowchart TD
63
+ start(["Start /performance-audit"])
64
+ role_1["qa"]
65
+ role_2["developer"]
66
+ role_3["team-lead"]
67
+ role_4["pm"]
68
+ step_1["1. Scenario Definition & Baseline Alignment"]
69
+ step_2["2. Load/Stress Execution & Monitoring Capture"]
70
+ step_3["3. Bottleneck Analysis & Fix Proposal"]
71
+ step_4["4. Prioritization & Delivery Planning"]
72
+ exit(["Published report + prioritized remediation plan + backlog items created = a..."])
73
+ start --> step_1
74
+ step_1 --> step_2
75
+ step_2 --> step_3
76
+ step_3 --> step_4
77
+ step_4 --> exit
78
+ role_1 -. owns .-> step_1
79
+ role_1 -. owns .-> step_2
80
+ role_2 -. owns .-> step_3
81
+ role_1 -. owns .-> step_3
82
+ role_3 -. owns .-> step_4
83
+ role_4 -. owns .-> step_4
84
+ ```
85
+ <!-- agent-diagram:end -->
86
+
58
87
  ## Exit
59
88
  Published report + prioritized remediation plan + backlog items created = audit complete.
@@ -55,5 +55,33 @@ quality-gates:
55
55
  - **Output:** `regression_report.md`; go/no-go decision
56
56
  - **Done when:** recommendation is explicit; stakeholders informed
57
57
 
58
+ ## Agent Interaction Diagram
59
+
60
+ <!-- agent-diagram:start -->
61
+ ```mermaid
62
+ flowchart TD
63
+ start(["Start /regression-suite"])
64
+ role_1["qa"]
65
+ role_2["developer"]
66
+ role_3["team-lead"]
67
+ step_1["1. Scope Selection & Environment Readiness"]
68
+ step_2["2. Suite Execution & Evidence Capture"]
69
+ step_3["3. Failure Triage & Fixes"]
70
+ step_4["4. Risk Review & Release Recommendation"]
71
+ exit(["Go recommendation + regression report = release confidence confirmed."])
72
+ start --> step_1
73
+ step_1 --> step_2
74
+ step_2 --> step_3
75
+ step_3 --> step_4
76
+ step_4 --> exit
77
+ role_1 -. owns .-> step_1
78
+ role_1 -. owns .-> step_2
79
+ role_2 -. owns .-> step_3
80
+ role_1 -. owns .-> step_3
81
+ role_3 -. owns .-> step_4
82
+ role_1 -. owns .-> step_4
83
+ ```
84
+ <!-- agent-diagram:end -->
85
+
58
86
  ## Exit
59
87
  Go recommendation + regression report = release confidence confirmed.
@@ -60,5 +60,36 @@ quality-gates:
60
60
  - **Output:** `smoke_result_summary.md`; stakeholders informed
61
61
  - **Done when:** all parties notified; action taken if needed
62
62
 
63
+ ## Agent Interaction Diagram
64
+
65
+ <!-- agent-diagram:start -->
66
+ ```mermaid
67
+ flowchart TD
68
+ start(["Start /smoke-test"])
69
+ role_1["qa"]
70
+ role_2["developer"]
71
+ role_3["team-lead"]
72
+ role_4["pm"]
73
+ step_1["1. Prepare Environment & Test Data"]
74
+ step_2["2. Run Critical Smoke Scenarios"]
75
+ step_3["3. Defect Triage & Fix"]
76
+ step_4["4. Operational Risk Assessment"]
77
+ step_5["5. Communicate Go/No-Go"]
78
+ exit(["Go status + summary published = deployment validated. No-go + rollback trig..."])
79
+ start --> step_1
80
+ step_1 --> step_2
81
+ step_2 --> step_3
82
+ step_3 --> step_4
83
+ step_4 --> step_5
84
+ step_5 --> exit
85
+ role_1 -. owns .-> step_1
86
+ role_1 -. owns .-> step_2
87
+ role_2 -. owns .-> step_3
88
+ role_3 -. owns .-> step_4
89
+ role_4 -. owns .-> step_5
90
+ role_1 -. owns .-> step_5
91
+ ```
92
+ <!-- agent-diagram:end -->
93
+
63
94
  ## Exit
64
95
  Go status + summary published = deployment validated. No-go + rollback triggered = incident response starts.
@@ -53,5 +53,33 @@ quality-gates:
53
53
  - **Output:** `coverage_report.md`; next sprint coverage actions noted
54
54
  - **Done when:** report shared with team; action items logged
55
55
 
56
+ ## Agent Interaction Diagram
57
+
58
+ <!-- agent-diagram:start -->
59
+ ```mermaid
60
+ flowchart TD
61
+ start(["Start /test-coverage-report"])
62
+ role_1["qa"]
63
+ role_2["team-lead"]
64
+ role_3["developer"]
65
+ step_1["1. Collect & Compare Metrics"]
66
+ step_2["2. Identify High-Risk Gaps"]
67
+ step_3["3. Implement Targeted Tests & Fixes"]
68
+ step_4["4. Publish Trend & Action Plan"]
69
+ exit(["Critical paths at threshold + trend published + gaps assigned = coverage cy..."])
70
+ start --> step_1
71
+ step_1 --> step_2
72
+ step_2 --> step_3
73
+ step_3 --> step_4
74
+ step_4 --> exit
75
+ role_1 -. owns .-> step_1
76
+ role_1 -. owns .-> step_2
77
+ role_2 -. owns .-> step_2
78
+ role_3 -. owns .-> step_3
79
+ role_1 -. owns .-> step_3
80
+ role_1 -. owns .-> step_4
81
+ ```
82
+ <!-- agent-diagram:end -->
83
+
56
84
  ## Exit
57
85
  Critical paths at threshold + trend published + gaps assigned = coverage cycle complete.
@@ -53,5 +53,32 @@ quality-gates:
53
53
  - **Output:** compliance report document
54
54
  - **Done when:** report complete; human review flag set
55
55
 
56
+ ## Agent Interaction Diagram
57
+
58
+ <!-- agent-diagram:start -->
59
+ ```mermaid
60
+ flowchart TD
61
+ start(["Start /compliance-report"])
62
+ role_1["team-lead"]
63
+ role_2["developer"]
64
+ role_3["qa"]
65
+ step_1["1. Map Controls"]
66
+ step_2["2. Collect Evidence"]
67
+ step_3["3. Evaluate Compliance"]
68
+ step_4["4. Generate Report"]
69
+ exit(["Complete control matrix + gap analysis + human review flag = report ready f..."])
70
+ start --> step_1
71
+ step_1 --> step_2
72
+ step_2 --> step_3
73
+ step_3 --> step_4
74
+ step_4 --> exit
75
+ role_1 -. owns .-> step_1
76
+ role_2 -. owns .-> step_2
77
+ role_3 -. owns .-> step_2
78
+ role_1 -. owns .-> step_3
79
+ role_1 -. owns .-> step_4
80
+ ```
81
+ <!-- agent-diagram:end -->
82
+
56
83
  ## Exit
57
84
  Complete control matrix + gap analysis + human review flag = report ready for review.
@@ -59,5 +59,33 @@ quality-gates:
59
59
  - **Output:** `pentest_report_<date>.md`; remediation assignments
60
60
  - **Done when:** report reviewed; remediation owners assigned
61
61
 
62
+ ## Agent Interaction Diagram
63
+
64
+ <!-- agent-diagram:start -->
65
+ ```mermaid
66
+ flowchart TD
67
+ start(["Start /pen-test-sim"])
68
+ role_1["team-lead"]
69
+ role_2["qa"]
70
+ step_1["1. Scope Confirmation"]
71
+ step_2["2. Passive Recon"]
72
+ step_3["3. Active Scanning"]
73
+ step_4["4. Manual Checks"]
74
+ step_5["5. Report"]
75
+ exit(["Published report + Critical/High findings assigned = pen-test complete."])
76
+ start --> step_1
77
+ step_1 --> step_2
78
+ step_2 --> step_3
79
+ step_3 --> step_4
80
+ step_4 --> step_5
81
+ step_5 --> exit
82
+ role_1 -. owns .-> step_1
83
+ role_2 -. owns .-> step_2
84
+ role_2 -. owns .-> step_3
85
+ role_2 -. owns .-> step_4
86
+ role_1 -. owns .-> step_5
87
+ ```
88
+ <!-- agent-diagram:end -->
89
+
62
90
  ## Exit
63
91
  Published report + Critical/High findings assigned = pen-test complete.
@@ -16,9 +16,9 @@ execution:
16
16
  initiator: developer
17
17
  related-rules:
18
18
  - secrets-policy.md
19
- - security-posture.md
19
+ - secure-coding.md
20
20
  uses-skills:
21
- - secrets-management
21
+ - crypto-standards
22
22
  quality-gates:
23
23
  - old credential revoked only after zero auth errors confirmed
24
24
  - audit log entry created with rotation metadata
@@ -63,5 +63,36 @@ quality-gates:
63
63
  - **Output:** audit record updated
64
64
  - **Done when:** inventory current; next rotation scheduled
65
65
 
66
+ ## Agent Interaction Diagram
67
+
68
+ <!-- agent-diagram:start -->
69
+ ```mermaid
70
+ flowchart TD
71
+ start(["Start /secret-rotation"])
72
+ role_1["developer"]
73
+ role_2["team-lead"]
74
+ step_1["1. Prepare New Secret"]
75
+ step_2["2. Dual-Read Window"]
76
+ step_3["3. Deploy New Secret"]
77
+ step_4["4. Validate"]
78
+ step_5["5. Revoke Old Secret"]
79
+ step_6["6. Document"]
80
+ exit(["Old secret revoked + audit record updated = rotation complete."])
81
+ start --> step_1
82
+ step_1 --> step_2
83
+ step_2 --> step_3
84
+ step_3 --> step_4
85
+ step_4 --> step_5
86
+ step_5 --> step_6
87
+ step_6 --> exit
88
+ role_1 -. owns .-> step_1
89
+ role_1 -. owns .-> step_2
90
+ role_1 -. owns .-> step_3
91
+ role_2 -. owns .-> step_4
92
+ role_1 -. owns .-> step_5
93
+ role_1 -. owns .-> step_6
94
+ ```
95
+ <!-- agent-diagram:end -->
96
+
66
97
  ## Exit
67
98
  Old secret revoked + audit record updated = rotation complete.
@@ -60,5 +60,34 @@ quality-gates:
60
60
  - **Output:** `finding_report.md`; PR review comments
61
61
  - **Done when:** report published; PR status set per findings
62
62
 
63
+ ## Agent Interaction Diagram
64
+
65
+ <!-- agent-diagram:start -->
66
+ ```mermaid
67
+ flowchart TD
68
+ start(["Start /security-scan"])
69
+ role_1["developer"]
70
+ role_2["qa"]
71
+ role_3["team-lead"]
72
+ step_1["1. SAST Scan"]
73
+ step_2["2. Dependency Audit"]
74
+ step_3["3. Secret Scanning"]
75
+ step_4["4. Infrastructure Scan"]
76
+ step_5["5. Synthesize & Report"]
77
+ exit(["No unaddressed Critical findings + report saved = scan complete."])
78
+ start --> step_1
79
+ step_1 --> step_2
80
+ step_2 --> step_3
81
+ step_3 --> step_4
82
+ step_4 --> step_5
83
+ step_5 --> exit
84
+ role_1 -. owns .-> step_1
85
+ role_1 -. owns .-> step_2
86
+ role_2 -. owns .-> step_3
87
+ role_1 -. owns .-> step_4
88
+ role_3 -. owns .-> step_5
89
+ ```
90
+ <!-- agent-diagram:end -->
91
+
63
92
  ## Exit
64
93
  No unaddressed Critical findings + report saved = scan complete.
@@ -58,5 +58,35 @@ quality-gates:
58
58
  - **Output:** `.security/threat-models/threat-model-<feature>.md` — DFD + STRIDE table + mitigations
59
59
  - **Done when:** all Required findings have assigned controls; document complete
60
60
 
61
+ ## Agent Interaction Diagram
62
+
63
+ <!-- agent-diagram:start -->
64
+ ```mermaid
65
+ flowchart TD
66
+ start(["Start /threat-model-review"])
67
+ role_1["team-lead"]
68
+ role_2["developer"]
69
+ role_3["qa"]
70
+ step_1["1. Parse Feature"]
71
+ step_2["2. Data Flow Diagram"]
72
+ step_3["3. STRIDE Analysis"]
73
+ step_4["4. Prioritize"]
74
+ step_5["5. Generate Mitigations"]
75
+ exit(["Published threat model + Required mitigations assigned = secure implementat..."])
76
+ start --> step_1
77
+ step_1 --> step_2
78
+ step_2 --> step_3
79
+ step_3 --> step_4
80
+ step_4 --> step_5
81
+ step_5 --> exit
82
+ role_1 -. owns .-> step_1
83
+ role_2 -. owns .-> step_2
84
+ role_1 -. owns .-> step_3
85
+ role_3 -. owns .-> step_3
86
+ role_1 -. owns .-> step_4
87
+ role_2 -. owns .-> step_5
88
+ ```
89
+ <!-- agent-diagram:end -->
90
+
61
91
  ## Exit
62
92
  Published threat model + Required mitigations assigned = secure implementation can proceed.
@@ -182,7 +182,7 @@ When `opencode` is selected, interactive installs ask whether to enable `Telegra
182
182
 
183
183
  Non-interactive installs create a disabled config when no config exists. Interactive installs ask for Telegram `botToken` and `chatId` when `telegram-notification` is selected. Those credentials are written to the target project `.agentic.json` under `settings.opencode_plugins.telegram`, not to `~/.config/agentic/opencode-plugins.json`. Treat `.agentic.json` as plaintext secret-bearing project config when Telegram is enabled and do not commit it to public repositories. When enabled, `agent-model-mapper` runs during interactive `agentic install`/`agentic tui`, uses `fzf` as a dropdown picker when available, and writes `.opencode/opencode.json` only after a Confirm action. OpenCode startup does not load a mapper runtime plugin or prompt for model mapping.
184
184
 
185
- OpenCode model profiles are stored in `extensions/opencode/profiles` and appear in the same optional OpenCode selection menu as the plugin choices. The built-in choices are `OpenAI Model Profile` and `GitHub Copilot Model Profile`; non-interactive installs can choose them with `AGENTIC_OPENCODE_PROFILE=openai` or `AGENTIC_OPENCODE_PROFILE=githubcopilot`. Profile selection merges agent model mappings into `.opencode/opencode.json`, then MCP configuration is merged afterward.
185
+ OpenCode model profiles are stored in `extensions/opencode/profiles` and appear in the same optional OpenCode selection menu as the plugin choices. The built-in choices are `OpenAI Model Profile` and `GitHub Copilot Model Profile`; non-interactive installs can choose them with `AGENTIC_OPENCODE_PROFILE=openai` or `AGENTIC_OPENCODE_PROFILE=githubcopilot`. Users can add local profiles under `$HOME/.config/agentic/opencode/profiles/<profile-id>/opencode.json`; for example, `DT/opencode.json` appears as `DT profile` and `GH/opencode.json` appears as `GH profile`. Profile selection merges agent model mappings into `.opencode/opencode.json`, then MCP configuration is merged afterward.
186
186
 
187
187
  OpenCode MCP config uses top-level `mcp`, not `mcpServers`. Agentic migrates legacy OpenCode `mcpServers` entries into `mcp` during install. Codex continues to use `.codex/config.toml` with `[mcp_servers.*]` sections.
188
188
 
@@ -44,7 +44,8 @@
44
44
  "uses_skills",
45
45
  "quality_gates",
46
46
  "examples",
47
- "skill_refs"
47
+ "skill_refs",
48
+ "workflow_diagram"
48
49
  ],
49
50
  "properties": {
50
51
  "trigger": {
@@ -104,6 +105,9 @@
104
105
  "type": "string"
105
106
  }
106
107
  },
108
+ "workflow_diagram": {
109
+ "type": "string"
110
+ },
107
111
  "examples": {
108
112
  "type": "object",
109
113
  "required": [
@@ -56,6 +56,16 @@ extensions/opencode/profiles/
56
56
 
57
57
  The current profiles are `OpenAI Model Profile` (`openai/opencode.json`) and `GitHub Copilot Model Profile` (`githubcopilot/opencode.json`). They appear in the same optional OpenCode selection menu as the plugin choices. Selecting one merges its agent model mapping into `.opencode/opencode.json`; later MCP configuration is merged on top, so profile selection does not block future MCP sections.
58
58
 
59
+ Users can add local OpenCode profiles in:
60
+
61
+ ```text
62
+ $HOME/.config/agentic/opencode/profiles/<profile-id>/opencode.json
63
+ ```
64
+
65
+ Local profiles appear below the bundled profiles in the optional OpenCode plugin menu using the label `<profile-id> profile`. For example, `$HOME/.config/agentic/opencode/profiles/DT/opencode.json` appears as `DT profile`, and `$HOME/.config/agentic/opencode/profiles/GH/opencode.json` appears as `GH profile`.
66
+
67
+ Selecting `none` applies no model profile and does not copy the baseline `extensions/opencode/opencode.json` just for profile selection. If OpenCode MCPs, Telegram notifications, or agent model mapping are selected, `agentic` may still create or update `.opencode/opencode.json` for those explicit options.
68
+
59
69
  For MCP servers, OpenCode uses top-level `mcp` entries. Agentic migrates legacy `mcpServers` in OpenCode configs to `mcp` and removes the invalid key.
60
70
 
61
71
  For OpenCode targets, `agentic` writes generated operating guidance to `.opencode/AGENTS.md`. If OpenCode is installed
@@ -17,11 +17,13 @@ For this repo we keep it lightweight and dependency-minimal:
17
17
  - site is static HTML/CSS/JS
18
18
  - markdown rendering via `marked` CDN
19
19
  - full-text search via `lunr` CDN
20
+ - workflow diagrams rendered via `mermaid` CDN
20
21
 
21
22
  ## Run locally
22
23
 
23
24
  ```bash
24
- python3 scripts/build_docs_catalog.py --output docs/site/catalog.json --validate
25
+ make sync-diagrams
26
+ make build
25
27
  python3 -m http.server 8000
26
28
  # open http://localhost:8000/docs/site/
27
29
  ```
@@ -31,7 +33,9 @@ python3 -m http.server 8000
31
33
  - Left menu grouped by area.
32
34
  - Full-text search by trigger/name/description/examples.
33
35
  - Language switcher: EN only / RU only / EN+RU.
36
+ - Light and dark themes, with light as the default and the selected theme saved in the browser.
34
37
  - Workflow page with quality gates and source paths.
38
+ - Generated Mermaid agent interaction diagrams for workflows.
35
39
 
36
40
 
37
41
  ## GitHub Pages
@@ -42,3 +46,13 @@ This site can be published from GitHub Pages via Actions workflow (`.github/work
42
46
  ## Workflow mapping
43
47
 
44
48
  Prompt-to-workflow mapping is command-based: `/workflow-file-name` in prompt text links to `workflows/<workflow-file-name>.md` in the same area.
49
+
50
+ ## Workflow diagrams
51
+
52
+ Workflow diagrams are generated into `areas/**/workflows/*.md` between `agent-diagram` markers:
53
+
54
+ ```bash
55
+ make sync-diagrams
56
+ ```
57
+
58
+ The catalog builder extracts those Mermaid blocks into `workflow_diagram`, and the static site renders them after Markdown parsing.
package/docs/site/app.js CHANGED
@@ -2,11 +2,16 @@ let catalog;
2
2
  let current = null;
3
3
  let idx;
4
4
  let docs = [];
5
+ let activeTheme = 'light';
5
6
 
6
7
  const menuEl = document.getElementById('menu');
7
8
  const contentEl = document.getElementById('content');
8
9
  const searchEl = document.getElementById('search');
9
10
  const langEl = document.getElementById('language');
11
+ const themeToggleEl = document.getElementById('theme-toggle');
12
+
13
+ applyTheme(getStoredTheme());
14
+ configureMermaid();
10
15
 
11
16
  init();
12
17
 
@@ -91,6 +96,8 @@ ${wf.description || ''}
91
96
  ## Roles
92
97
  ${(wf.roles || []).map((r) => `<span class="chip">${r}</span>`).join(' ')}
93
98
 
99
+ ${wf.workflow_diagram ? `## Agent Interaction Diagram\n\n\`\`\`mermaid\n${escapeFence(wf.workflow_diagram)}\n\`\`\`` : ''}
100
+
94
101
  ## Quality gates
95
102
  ${(wf.quality_gates || []).map((q) => `- ${q}`).join('\n') || '- —'}
96
103
 
@@ -106,12 +113,66 @@ ${examples || '_No examples_'}
106
113
  `;
107
114
 
108
115
  contentEl.innerHTML = marked.parse(md);
116
+ renderMermaidBlocks();
117
+ }
118
+
119
+ function getStoredTheme() {
120
+ try {
121
+ const theme = window.localStorage.getItem('docs-site-theme');
122
+ return theme === 'dark' ? 'dark' : 'light';
123
+ } catch {
124
+ return 'light';
125
+ }
126
+ }
127
+
128
+ function storeTheme(theme) {
129
+ try {
130
+ window.localStorage.setItem('docs-site-theme', theme);
131
+ } catch {
132
+ // localStorage can be unavailable in private or restricted browser modes.
133
+ }
134
+ }
135
+
136
+ function applyTheme(theme) {
137
+ activeTheme = theme === 'dark' ? 'dark' : 'light';
138
+ document.documentElement.dataset.theme = activeTheme;
139
+ if (!themeToggleEl) return;
140
+ const isDark = activeTheme === 'dark';
141
+ themeToggleEl.setAttribute('aria-pressed', String(isDark));
142
+ themeToggleEl.textContent = isDark ? 'Light' : 'Dark';
143
+ }
144
+
145
+ function configureMermaid() {
146
+ if (!window.mermaid) return;
147
+ window.mermaid.initialize({
148
+ startOnLoad: false,
149
+ securityLevel: 'strict',
150
+ theme: activeTheme === 'dark' ? 'dark' : 'default',
151
+ });
109
152
  }
110
153
 
111
154
  function escapeFence(s) {
112
155
  return (s || '').replace(/```/g, '\\\`\\\`\\\`');
113
156
  }
114
157
 
158
+ async function renderMermaidBlocks() {
159
+ const blocks = [...contentEl.querySelectorAll('code.language-mermaid')];
160
+ if (!blocks.length) return;
161
+
162
+ const nodes = blocks.map((block) => {
163
+ const diagram = document.createElement('div');
164
+ diagram.className = 'mermaid';
165
+ diagram.textContent = block.textContent;
166
+ block.parentElement.replaceWith(diagram);
167
+ return diagram;
168
+ });
169
+
170
+ if (window.mermaid) {
171
+ configureMermaid();
172
+ await window.mermaid.run({ nodes });
173
+ }
174
+ }
175
+
115
176
  searchEl.addEventListener('input', () => {
116
177
  const q = searchEl.value.trim();
117
178
  if (!q) {
@@ -125,3 +186,10 @@ searchEl.addEventListener('input', () => {
125
186
  langEl.addEventListener('change', () => {
126
187
  if (current) renderWorkflow(current.id);
127
188
  });
189
+
190
+ themeToggleEl.addEventListener('click', () => {
191
+ const nextTheme = activeTheme === 'dark' ? 'light' : 'dark';
192
+ applyTheme(nextTheme);
193
+ storeTheme(nextTheme);
194
+ if (current) renderWorkflow(current.id);
195
+ });