@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.
- package/AGENTS.md +8 -0
- package/CHANGELOG.md +3 -0
- package/Makefile +21 -5
- package/README.md +17 -4
- package/agentic +78 -7
- package/areas/devops/ci-cd/workflows/onboard-repo.md +29 -0
- package/areas/devops/ci-cd/workflows/pipeline-debug.md +26 -0
- package/areas/devops/ci-cd/workflows/release-pipeline.md +53 -0
- package/areas/devops/database-ops/workflows/backup-verify.md +27 -0
- package/areas/devops/database-ops/workflows/db-incident.md +30 -0
- package/areas/devops/devsecops/workflows/policy-onboard.md +34 -0
- package/areas/devops/devsecops/workflows/security-scan-pipeline.md +33 -0
- package/areas/devops/infrastructure/workflows/destroy-environment.md +31 -0
- package/areas/devops/infrastructure/workflows/drift-remediation.md +29 -0
- package/areas/devops/infrastructure/workflows/module-development.md +32 -0
- package/areas/devops/infrastructure/workflows/provision-environment.md +29 -0
- package/areas/devops/kubernetes/workflows/cluster-bootstrap.md +36 -0
- package/areas/devops/kubernetes/workflows/debug-workload.md +29 -0
- package/areas/devops/kubernetes/workflows/onboard-service.md +35 -0
- package/areas/devops/kubernetes/workflows/upgrade-cluster.md +30 -0
- package/areas/devops/networking/workflows/onboard-ingress.md +27 -0
- package/areas/devops/networking/workflows/service-mesh-onboard.md +27 -0
- package/areas/devops/observability/workflows/alert-investigation.md +29 -0
- package/areas/devops/observability/workflows/observability-stack-setup.md +33 -0
- package/areas/devops/observability/workflows/onboard-service-monitoring.md +31 -0
- package/areas/devops/sre/workflows/incident-response.md +48 -0
- package/areas/devops/sre/workflows/postmortem.md +32 -0
- package/areas/devops/sre/workflows/slo-review.md +35 -1
- package/areas/software/backend/workflows/add-migration.md +33 -0
- package/areas/software/backend/workflows/create-endpoint.md +40 -0
- package/areas/software/backend/workflows/debug-issue.md +31 -0
- package/areas/software/backend/workflows/develop-epic.md +37 -0
- package/areas/software/backend/workflows/develop-feature.md +44 -0
- package/areas/software/backend/workflows/refactor-module.md +35 -0
- package/areas/software/backend/workflows/test-feature.md +30 -0
- package/areas/software/data-engineering/workflows/backfill-data.md +25 -0
- package/areas/software/data-engineering/workflows/data-quality-incident.md +31 -0
- package/areas/software/data-engineering/workflows/lineage-trace.md +25 -0
- package/areas/software/data-engineering/workflows/new-model.md +30 -0
- package/areas/software/data-engineering/workflows/schema-migration.md +29 -0
- package/areas/software/frontend/workflows/a11y-fix.md +30 -0
- package/areas/software/frontend/workflows/bundle-analyze.md +28 -0
- package/areas/software/frontend/workflows/release-prep.md +33 -0
- package/areas/software/frontend/workflows/scaffold-component.md +32 -0
- package/areas/software/frontend/workflows/visual-regression.md +32 -0
- package/areas/software/full-stack/workflows/backend-project-full-cycle.md +47 -2
- package/areas/software/full-stack/workflows/debug-issue.md +29 -0
- package/areas/software/full-stack/workflows/develop-feature.md +38 -0
- package/areas/software/full-stack/workflows/feature-implementation-flow.md +38 -0
- package/areas/software/full-stack/workflows/testing-ci-pipeline.md +30 -0
- package/areas/software/general/workflows/code-review-workflow.md +31 -0
- package/areas/software/general/workflows/development-cycle-workflow.md +38 -0
- package/areas/software/general/workflows/project-setup-workflow.md +38 -0
- package/areas/software/mlops/workflows/champion-challenger.md +29 -0
- package/areas/software/mlops/workflows/deploy-endpoint.md +30 -0
- package/areas/software/mlops/workflows/evaluate-model.md +28 -0
- package/areas/software/mlops/workflows/model-incident.md +29 -0
- package/areas/software/mlops/workflows/train-experiment.md +25 -0
- package/areas/software/mobile/workflows/crash-triage.md +28 -0
- package/areas/software/mobile/workflows/device-testing.md +27 -0
- package/areas/software/mobile/workflows/ota-update.md +25 -0
- package/areas/software/mobile/workflows/release-build.md +30 -0
- package/areas/software/mobile/workflows/store-submission.md +29 -0
- package/areas/software/platform/workflows/cost-audit.md +28 -0
- package/areas/software/platform/workflows/deploy-production.md +30 -0
- package/areas/software/platform/workflows/drift-check.md +29 -0
- package/areas/software/platform/workflows/incident-response.md +33 -0
- package/areas/software/platform/workflows/provision-env.md +36 -0
- package/areas/software/qa/workflows/flakiness-investigation.md +30 -0
- package/areas/software/qa/workflows/performance-audit.md +29 -0
- package/areas/software/qa/workflows/regression-suite.md +28 -0
- package/areas/software/qa/workflows/smoke-test.md +31 -0
- package/areas/software/qa/workflows/test-coverage-report.md +28 -0
- package/areas/software/security/workflows/compliance-report.md +27 -0
- package/areas/software/security/workflows/pen-test-sim.md +28 -0
- package/areas/software/security/workflows/secret-rotation.md +33 -2
- package/areas/software/security/workflows/security-scan.md +29 -0
- package/areas/software/security/workflows/threat-model-review.md +30 -0
- package/docs/agentic-usage.md +1 -1
- package/docs/catalog.schema.json +5 -1
- package/docs/opencode_setup.md +10 -0
- package/docs/site/README.md +15 -1
- package/docs/site/app.js +68 -0
- package/docs/site/catalog.json +74 -1
- package/docs/site/index.html +5 -1
- package/docs/site/styles.css +52 -4
- package/extensions/opencode/opencode.json +0 -1
- package/extensions/opencode/profiles/githubcopilot/opencode.json +1 -2
- package/extensions/opencode/profiles/openai/opencode.json +20 -20
- package/package.json +1 -1
- package/scripts/build_docs_catalog.py +13 -1
- package/scripts/sync_workflow_diagrams.py +199 -0
- 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
|
-
-
|
|
19
|
+
- secure-coding.md
|
|
20
20
|
uses-skills:
|
|
21
|
-
-
|
|
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.
|
package/docs/agentic-usage.md
CHANGED
|
@@ -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
|
|
package/docs/catalog.schema.json
CHANGED
|
@@ -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": [
|
package/docs/opencode_setup.md
CHANGED
|
@@ -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
|
package/docs/site/README.md
CHANGED
|
@@ -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
|
-
|
|
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
|
+
});
|