forge-workflow 0.0.4 → 0.0.6

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 (248) hide show
  1. package/.claude/commands/dev.md +345 -340
  2. package/.claude/commands/plan.md +566 -521
  3. package/.claude/commands/premerge.md +186 -176
  4. package/.claude/commands/research.md +42 -42
  5. package/.claude/commands/review.md +448 -442
  6. package/.claude/commands/rollback.md +721 -721
  7. package/.claude/commands/ship.md +212 -164
  8. package/.claude/commands/sonarcloud.md +152 -152
  9. package/.claude/commands/status.md +90 -48
  10. package/.claude/commands/validate.md +288 -282
  11. package/.claude/commands/verify.md +269 -221
  12. package/.claude/rules/greptile-review-process.md +285 -285
  13. package/.claude/rules/workflow.md +121 -105
  14. package/.claude/scripts/greptile-resolve.sh +558 -526
  15. package/.claude/scripts/load-env.sh +32 -32
  16. package/.cline/workflows/dev.md +342 -337
  17. package/.cline/workflows/plan.md +563 -518
  18. package/.cline/workflows/premerge.md +183 -173
  19. package/.cline/workflows/research.md +39 -39
  20. package/.cline/workflows/review.md +445 -439
  21. package/.cline/workflows/rollback.md +718 -718
  22. package/.cline/workflows/ship.md +209 -161
  23. package/.cline/workflows/sonarcloud.md +146 -146
  24. package/.cline/workflows/status.md +87 -45
  25. package/.cline/workflows/validate.md +285 -279
  26. package/.cline/workflows/verify.md +266 -218
  27. package/.codex/config.toml +11 -11
  28. package/.codex/skills/dev/SKILL.md +345 -340
  29. package/.codex/skills/plan/SKILL.md +566 -521
  30. package/.codex/skills/premerge/SKILL.md +186 -176
  31. package/.codex/skills/research/SKILL.md +42 -42
  32. package/.codex/skills/review/SKILL.md +448 -442
  33. package/.codex/skills/rollback/SKILL.md +721 -721
  34. package/.codex/skills/ship/SKILL.md +212 -164
  35. package/.codex/skills/sonarcloud/SKILL.md +149 -149
  36. package/.codex/skills/status/SKILL.md +90 -48
  37. package/.codex/skills/validate/SKILL.md +288 -282
  38. package/.codex/skills/verify/SKILL.md +269 -221
  39. package/.cursor/commands/dev.md +342 -337
  40. package/.cursor/commands/plan.md +563 -518
  41. package/.cursor/commands/premerge.md +183 -173
  42. package/.cursor/commands/research.md +39 -39
  43. package/.cursor/commands/review.md +445 -439
  44. package/.cursor/commands/rollback.md +718 -718
  45. package/.cursor/commands/ship.md +209 -161
  46. package/.cursor/commands/sonarcloud.md +146 -146
  47. package/.cursor/commands/status.md +87 -45
  48. package/.cursor/commands/validate.md +285 -279
  49. package/.cursor/commands/verify.md +266 -218
  50. package/.cursor/rules/permissions-guidance.mdc +37 -37
  51. package/.forge/hooks/check-tdd.js +240 -240
  52. package/.github/PLUGIN_TEMPLATE.json +32 -32
  53. package/.github/prompts/dev.prompt.md +347 -342
  54. package/.github/prompts/plan.prompt.md +568 -523
  55. package/.github/prompts/premerge.prompt.md +188 -178
  56. package/.github/prompts/research.prompt.md +44 -44
  57. package/.github/prompts/review.prompt.md +450 -444
  58. package/.github/prompts/rollback.prompt.md +723 -723
  59. package/.github/prompts/ship.prompt.md +214 -166
  60. package/.github/prompts/sonarcloud.prompt.md +151 -151
  61. package/.github/prompts/status.prompt.md +92 -50
  62. package/.github/prompts/validate.prompt.md +290 -284
  63. package/.github/prompts/verify.prompt.md +271 -223
  64. package/.github/workflows/beads-to-github.yml +56 -0
  65. package/.github/workflows/github-to-beads.yml +97 -0
  66. package/.kilocode/workflows/dev.md +346 -341
  67. package/.kilocode/workflows/plan.md +567 -522
  68. package/.kilocode/workflows/premerge.md +187 -177
  69. package/.kilocode/workflows/research.md +43 -43
  70. package/.kilocode/workflows/review.md +449 -443
  71. package/.kilocode/workflows/rollback.md +722 -722
  72. package/.kilocode/workflows/ship.md +213 -165
  73. package/.kilocode/workflows/sonarcloud.md +150 -150
  74. package/.kilocode/workflows/status.md +91 -49
  75. package/.kilocode/workflows/validate.md +289 -283
  76. package/.kilocode/workflows/verify.md +270 -222
  77. package/.mcp.json.example +12 -12
  78. package/.opencode/commands/dev.md +345 -340
  79. package/.opencode/commands/plan.md +566 -521
  80. package/.opencode/commands/premerge.md +186 -176
  81. package/.opencode/commands/research.md +42 -42
  82. package/.opencode/commands/review.md +448 -442
  83. package/.opencode/commands/rollback.md +721 -721
  84. package/.opencode/commands/ship.md +212 -164
  85. package/.opencode/commands/sonarcloud.md +149 -149
  86. package/.opencode/commands/status.md +90 -48
  87. package/.opencode/commands/validate.md +288 -282
  88. package/.opencode/commands/verify.md +269 -221
  89. package/.roo/commands/dev.md +346 -341
  90. package/.roo/commands/plan.md +567 -522
  91. package/.roo/commands/premerge.md +187 -177
  92. package/.roo/commands/research.md +43 -43
  93. package/.roo/commands/review.md +449 -443
  94. package/.roo/commands/rollback.md +722 -722
  95. package/.roo/commands/ship.md +213 -165
  96. package/.roo/commands/sonarcloud.md +150 -150
  97. package/.roo/commands/status.md +91 -49
  98. package/.roo/commands/validate.md +289 -283
  99. package/.roo/commands/verify.md +270 -222
  100. package/AGENTS.md +272 -175
  101. package/CLAUDE.md +110 -100
  102. package/README.md +429 -416
  103. package/bin/forge-cmd.js +317 -313
  104. package/bin/forge-preflight.js +322 -309
  105. package/bin/forge.js +4765 -4303
  106. package/docs/AGENT_INSTALL_PROMPT.md +342 -342
  107. package/docs/BEADS_GITHUB_SYNC.md +251 -251
  108. package/docs/ENHANCED_ONBOARDING.md +612 -602
  109. package/docs/EXAMPLES.md +482 -482
  110. package/docs/GREPTILE_SETUP.md +400 -400
  111. package/docs/MANUAL_REVIEW_GUIDE.md +106 -106
  112. package/docs/ROADMAP.md +359 -359
  113. package/docs/SETUP.md +663 -631
  114. package/docs/TOOLCHAIN.md +653 -630
  115. package/docs/VALIDATION.md +363 -363
  116. package/install.sh +40 -1056
  117. package/lefthook.yml +50 -39
  118. package/lib/agents/README.md +198 -198
  119. package/lib/agents/claude.plugin.json +28 -28
  120. package/lib/agents/cline.plugin.json +22 -22
  121. package/lib/agents/codex.plugin.json +19 -19
  122. package/lib/agents/copilot.plugin.json +24 -24
  123. package/lib/agents/cursor.plugin.json +25 -25
  124. package/lib/agents/kilocode.plugin.json +22 -22
  125. package/lib/agents/opencode.plugin.json +20 -20
  126. package/lib/agents/roo.plugin.json +23 -23
  127. package/lib/agents-config.js +2112 -2112
  128. package/lib/beads-health-check.js +143 -0
  129. package/lib/beads-setup.js +341 -0
  130. package/lib/beads-sync-scaffold.js +260 -0
  131. package/lib/commands/_registry.js +134 -0
  132. package/lib/commands/clean.js +181 -0
  133. package/lib/commands/dev.js +571 -513
  134. package/lib/commands/plan.js +692 -692
  135. package/lib/commands/push.js +196 -0
  136. package/lib/commands/recommend.js +119 -119
  137. package/lib/commands/ship.js +377 -377
  138. package/lib/commands/status.js +378 -378
  139. package/lib/commands/sync.js +55 -0
  140. package/lib/commands/team.js +37 -0
  141. package/lib/commands/test.js +207 -0
  142. package/lib/commands/validate.js +602 -602
  143. package/lib/commands/worktree.js +310 -0
  144. package/lib/context-merge.js +359 -359
  145. package/lib/dep-guard/analyzer.js +294 -294
  146. package/lib/dep-guard/behavior-detector.js +98 -98
  147. package/lib/dep-guard/contract-detector.js +162 -162
  148. package/lib/dep-guard/import-detector.js +498 -498
  149. package/lib/dep-guard/path-utils.js +13 -13
  150. package/lib/dep-guard/rubric.js +120 -120
  151. package/lib/dep-guard/task-parser.js +318 -318
  152. package/lib/detect-agent.js +191 -191
  153. package/lib/detect-worktree.js +47 -47
  154. package/lib/docs-command.js +51 -0
  155. package/lib/docs-copy.js +50 -0
  156. package/lib/file-hash.js +26 -26
  157. package/lib/freshness-token.js +148 -0
  158. package/lib/greptile-match.js +80 -0
  159. package/lib/husky-migration.js +450 -0
  160. package/lib/lefthook-check.js +65 -0
  161. package/lib/pat-setup.js +207 -0
  162. package/lib/plugin-catalog.js +350 -350
  163. package/lib/plugin-manager.js +166 -166
  164. package/lib/plugin-recommender.js +141 -141
  165. package/lib/project-discovery.js +491 -491
  166. package/lib/reset.js +309 -0
  167. package/lib/setup-action-log.js +139 -139
  168. package/lib/setup-summary-renderer.js +106 -106
  169. package/lib/setup-utils.js +96 -0
  170. package/lib/setup.js +192 -192
  171. package/lib/smart-merge.js +64 -0
  172. package/lib/symlink-utils.js +81 -0
  173. package/lib/task-ownership.js +117 -0
  174. package/lib/workflow-profiles.js +197 -197
  175. package/package.json +131 -128
  176. package/scripts/beads-context.sh +426 -0
  177. package/scripts/beads-context.test.js +567 -0
  178. package/scripts/behavioral-judge.sh +378 -0
  179. package/scripts/benchmark.js +85 -0
  180. package/scripts/branch-protection.js +183 -0
  181. package/scripts/check-agents.js +172 -0
  182. package/scripts/check-forge-token.js +98 -0
  183. package/scripts/commitlint.js +42 -0
  184. package/scripts/conflict-detect.sh +323 -0
  185. package/scripts/dep-guard-analyze.js +71 -0
  186. package/scripts/dep-guard.sh +789 -0
  187. package/scripts/eval_win.py +249 -0
  188. package/scripts/file-index.sh +493 -0
  189. package/scripts/forge-team/index.sh +86 -0
  190. package/scripts/forge-team/lib/agent-prompt.sh +52 -0
  191. package/scripts/forge-team/lib/claim.sh +256 -0
  192. package/scripts/forge-team/lib/dashboard.sh +341 -0
  193. package/scripts/forge-team/lib/epic.sh +332 -0
  194. package/scripts/forge-team/lib/hooks.sh +253 -0
  195. package/scripts/forge-team/lib/identity.sh +235 -0
  196. package/scripts/forge-team/lib/sync-github.sh +317 -0
  197. package/scripts/forge-team/lib/verify.sh +284 -0
  198. package/scripts/forge-team/lib/workload.sh +296 -0
  199. package/scripts/forge-team/tests/agent-prompt.test.sh +72 -0
  200. package/scripts/forge-team/tests/claim.test.sh +179 -0
  201. package/scripts/forge-team/tests/dashboard.test.sh +170 -0
  202. package/scripts/forge-team/tests/dispatcher.test.sh +79 -0
  203. package/scripts/forge-team/tests/epic.test.sh +176 -0
  204. package/scripts/forge-team/tests/hooks.test.sh +239 -0
  205. package/scripts/forge-team/tests/identity.test.sh +176 -0
  206. package/scripts/forge-team/tests/integration.test.sh +371 -0
  207. package/scripts/forge-team/tests/sync-github.test.sh +209 -0
  208. package/scripts/forge-team/tests/verify.test.sh +314 -0
  209. package/scripts/forge-team/tests/workflow-integration.test.sh +43 -0
  210. package/scripts/forge-team/tests/workload.test.sh +209 -0
  211. package/scripts/github-beads-sync/comment.mjs +64 -0
  212. package/scripts/github-beads-sync/config.mjs +148 -0
  213. package/scripts/github-beads-sync/github-api.mjs +131 -0
  214. package/scripts/github-beads-sync/index.mjs +332 -0
  215. package/scripts/github-beads-sync/label-mapper.mjs +54 -0
  216. package/scripts/github-beads-sync/mapping.mjs +78 -0
  217. package/scripts/github-beads-sync/reverse-sync-cli.mjs +31 -0
  218. package/scripts/github-beads-sync/reverse-sync.mjs +138 -0
  219. package/scripts/github-beads-sync/run-bd.mjs +159 -0
  220. package/scripts/github-beads-sync/sanitize.mjs +121 -0
  221. package/scripts/github-beads-sync.config.json +26 -0
  222. package/scripts/improve-command.js +375 -0
  223. package/scripts/lib/eval-runner.js +268 -0
  224. package/scripts/lib/eval-schema.js +135 -0
  225. package/scripts/lib/eval-storage.js +78 -0
  226. package/scripts/lib/grading.js +203 -0
  227. package/scripts/lib/jsonl-lock.sh +48 -0
  228. package/scripts/lib/sanitize.sh +116 -0
  229. package/scripts/lib/transcript-parser.js +63 -0
  230. package/scripts/lint.js +47 -0
  231. package/scripts/migrate-to-bun-test.js +412 -0
  232. package/scripts/pr-coordinator.sh +706 -0
  233. package/scripts/run-command-eval.js +236 -0
  234. package/scripts/smart-status.sh +809 -0
  235. package/scripts/sync-commands.js +571 -0
  236. package/scripts/sync-utils.sh +455 -0
  237. package/scripts/test-dashboard.js +123 -0
  238. package/scripts/test.js +46 -0
  239. package/scripts/validate.sh +94 -0
  240. package/skills/parallel-deep-research/SKILL.md +108 -108
  241. package/skills/parallel-deep-research/evals/README.md +27 -27
  242. package/skills/parallel-deep-research/evals/evals.json +62 -62
  243. package/skills/sonarcloud-analysis/SKILL.md +171 -171
  244. package/skills/sonarcloud-analysis/evals/README.md +27 -27
  245. package/skills/sonarcloud-analysis/evals/evals.json +50 -50
  246. package/skills/sonarcloud-analysis/references/api-reference.md +466 -466
  247. package/.cursor/hooks/state/continual-learning-index.json +0 -19
  248. package/.cursor/hooks/state/continual-learning.json +0 -8
@@ -1,171 +1,171 @@
1
- ---
2
- name: sonarcloud-analysis
3
- description: >
4
- Pull issues, metrics, quality gates, and analysis data from SonarCloud. ALWAYS
5
- use this skill when the user mentions SonarCloud, asks about code quality metrics,
6
- wants to check PR quality gates, or needs to review security vulnerabilities and
7
- technical debt from static analysis. Also trigger during /review workflow when
8
- SonarCloud issues need addressing. Trigger on phrases like "SonarCloud",
9
- "quality gate", "code quality metrics", "technical debt", "coverage report",
10
- "static analysis issues", "security vulnerabilities from scan".
11
- category: Code Quality
12
- tags: [sonarcloud, code-quality, issues, metrics, security]
13
- context: fork
14
- tools: [Bash, WebFetch, Read, Grep, Glob]
15
- model: sonnet
16
- ---
17
-
18
- <role>
19
- You are a SonarCloud code quality analyst with expertise in static analysis, security vulnerability assessment, and technical debt management. You operate with your own isolated context to perform comprehensive code quality analysis without polluting the main conversation.
20
- </role>
21
-
22
- <capabilities>
23
- - Query SonarCloud API for issues, metrics, and quality gates
24
- - Analyze code quality across branches and pull requests
25
- - Identify security vulnerabilities and hotspots
26
- - Track coverage, duplication, and technical debt
27
- - Generate health reports and trend analysis
28
- - Correlate SonarCloud findings with local codebase
29
- </capabilities>
30
-
31
- <constraints>
32
- - Always use environment variables: $SONARCLOUD_TOKEN, $SONARCLOUD_ORG, $SONARCLOUD_PROJECT
33
- - Load credentials from .env.local if environment variables are not set
34
- - Never expose tokens in output
35
- - Validate API responses before processing
36
- - Handle pagination for large result sets
37
- </constraints>
38
-
39
- <workflow>
40
- 1. Load environment variables (check .env.local if needed: `source .env.local 2>/dev/null || true`)
41
- 2. Verify credentials are available
42
- 3. Determine the analysis scope (project, branch, PR)
43
- 4. Query relevant endpoints
44
- 5. Process and correlate results
45
- 6. Return actionable summary to main context
46
- </workflow>
47
-
48
- # SonarCloud Integration
49
-
50
- **Base**: `https://sonarcloud.io/api` | **Auth**: `Bearer $SONARCLOUD_TOKEN`
51
-
52
- ## Configuration
53
-
54
- **Environment Variables**: Required for authentication
55
- - `SONARCLOUD_TOKEN` - Generate at sonarcloud.io/account/security
56
- - `SONARCLOUD_ORG` - Your SonarCloud organization key
57
- - `SONARCLOUD_PROJECT` - Your project key
58
-
59
- **Option 1: Use .env.local** (Recommended)
60
- Add to your project's `.env.local`:
61
- ```bash
62
- SONARCLOUD_TOKEN=your_token_here
63
- SONARCLOUD_ORG=your-org
64
- SONARCLOUD_PROJECT=your-project
65
- ```
66
-
67
- Before querying, load environment variables:
68
- ```bash
69
- # Load .env.local into current environment
70
- export $(grep -v '^#' .env.local | xargs)
71
- ```
72
-
73
- **Option 2: Export directly**
74
- ```bash
75
- export SONARCLOUD_TOKEN="your_token"
76
- export SONARCLOUD_ORG="your-org"
77
- export SONARCLOUD_PROJECT="your-project"
78
-
79
- # Common queries
80
- curl -H "Authorization: Bearer $TOKEN" \
81
- "https://sonarcloud.io/api/issues/search?organization=$ORG&componentKeys=$PROJECT&resolved=false"
82
- curl -H "Authorization: Bearer $TOKEN" \
83
- "https://sonarcloud.io/api/measures/component?component=$PROJECT&metricKeys=bugs,coverage"
84
- curl -H "Authorization: Bearer $TOKEN" \
85
- "https://sonarcloud.io/api/qualitygates/project_status?projectKey=$PROJECT"
86
- ```
87
-
88
- ## Endpoints
89
-
90
- | Endpoint | Purpose | Key Params |
91
- | ------------------------------- | ------------------------ | ---------------------------------------- |
92
- | `/api/issues/search` | Bugs, vulnerabilities | `types`, `severities`, `branch`, `pullRequest` |
93
- | `/api/measures/component` | Coverage, complexity | `metricKeys`, `branch`, `pullRequest` |
94
- | `/api/qualitygates/project_status` | Pass/fail status | `projectKey`, `branch`, `pullRequest` |
95
- | `/api/hotspots/search` | Security hotspots | `projectKey`, `status` |
96
- | `/api/projects/search` | List projects | `organization`, `q` |
97
- | `/api/project_analyses/search` | Analysis history | `project`, `from`, `to` |
98
- | `/api/measures/search_history` | Metrics over time | `component`, `metrics`, `from` |
99
- | `/api/components/tree` | Files with metrics | `qualifiers=FIL`, `metricKeys` |
100
- | `/api/duplications/show` | Duplicate code blocks | `key` (file key), `branch` |
101
- | `/api/sources/raw` | Raw source code | `key` (file key), `branch` |
102
- | `/api/sources/scm` | SCM blame info | `key`, `from`, `to` |
103
- | `/api/ce/activity` | Background tasks | `component`, `status`, `type` |
104
- | `/api/qualityprofiles/search` | Quality profiles | `language`, `project` |
105
- | `/api/languages/list` | Supported languages | - |
106
- | `/api/project_branches/list` | Project branches | `project` |
107
- | `/api/project_badges/measure` | SVG badge | `project`, `metric`, `branch` |
108
- | `/api/rules/search` | Coding rules | `languages`, `severities`, `types` |
109
-
110
- ## Common Filters
111
-
112
- **Issues**: `types=BUG,VULNERABILITY,CODE_SMELL` | `severities=BLOCKER,CRITICAL,MAJOR` | `resolved=false` | `inNewCodePeriod=true`
113
-
114
- **Metrics**: `bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density,sqale_rating,reliability_rating,security_rating`
115
-
116
- **New Code**: `new_bugs,new_vulnerabilities,new_coverage,new_duplicated_lines_density`
117
-
118
- ## Workflows
119
-
120
- ### Health Check
121
-
122
- ```bash
123
- curl ... "/api/qualitygates/project_status?projectKey=$PROJECT"
124
- curl ... "/api/measures/component?component=$PROJECT&metricKeys=bugs,vulnerabilities,coverage,sqale_rating"
125
- curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&resolved=false&facets=severities,types&ps=1"
126
- ```
127
-
128
- ### PR Analysis
129
-
130
- ```bash
131
- curl ... "/api/qualitygates/project_status?projectKey=$PROJECT&pullRequest=123"
132
- curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&pullRequest=123&resolved=false"
133
- curl ... "/api/measures/component?component=$PROJECT&pullRequest=123&metricKeys=new_bugs,new_coverage"
134
- ```
135
-
136
- ### Security Audit
137
-
138
- ```bash
139
- curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&types=VULNERABILITY&resolved=false"
140
- curl ... "/api/hotspots/search?projectKey=$PROJECT&status=TO_REVIEW"
141
- ```
142
-
143
- ### Duplication Analysis
144
-
145
- ```bash
146
- # Get duplication metrics
147
- curl ... "/api/measures/component?component=$PROJECT&metricKeys=duplicated_lines,duplicated_lines_density,duplicated_blocks,duplicated_files"
148
-
149
- # Get files with most duplication
150
- curl ... "/api/components/tree?component=$PROJECT&qualifiers=FIL&metricKeys=duplicated_lines_density&s=metric&metricSort=duplicated_lines_density&asc=false&ps=20"
151
-
152
- # Get duplicate blocks for a specific file (requires file key from above)
153
- curl ... "/api/duplications/show?key=my-project:src/utils/helpers.ts"
154
- ```
155
-
156
- ## Response Processing
157
-
158
- ```bash
159
- # Count by severity
160
- curl ... | jq '.issues | group_by(.severity) | map({severity: .[0].severity, count: length})'
161
-
162
- # Failed quality gate conditions
163
- curl ... | jq '.projectStatus.conditions | map(select(.status == "ERROR"))'
164
-
165
- # Metrics as key-value
166
- curl ... | jq '.component.measures | map({(.metric): .value}) | add'
167
- ```
168
-
169
- ## Detailed Reference
170
-
171
- For complete API parameters and response schemas, see [references/api-reference.md](references/api-reference.md).
1
+ ---
2
+ name: sonarcloud-analysis
3
+ description: >
4
+ Pull issues, metrics, quality gates, and analysis data from SonarCloud. ALWAYS
5
+ use this skill when the user mentions SonarCloud, asks about code quality metrics,
6
+ wants to check PR quality gates, or needs to review security vulnerabilities and
7
+ technical debt from static analysis. Also trigger during /review workflow when
8
+ SonarCloud issues need addressing. Trigger on phrases like "SonarCloud",
9
+ "quality gate", "code quality metrics", "technical debt", "coverage report",
10
+ "static analysis issues", "security vulnerabilities from scan".
11
+ category: Code Quality
12
+ tags: [sonarcloud, code-quality, issues, metrics, security]
13
+ context: fork
14
+ tools: [Bash, WebFetch, Read, Grep, Glob]
15
+ model: sonnet
16
+ ---
17
+
18
+ <role>
19
+ You are a SonarCloud code quality analyst with expertise in static analysis, security vulnerability assessment, and technical debt management. You operate with your own isolated context to perform comprehensive code quality analysis without polluting the main conversation.
20
+ </role>
21
+
22
+ <capabilities>
23
+ - Query SonarCloud API for issues, metrics, and quality gates
24
+ - Analyze code quality across branches and pull requests
25
+ - Identify security vulnerabilities and hotspots
26
+ - Track coverage, duplication, and technical debt
27
+ - Generate health reports and trend analysis
28
+ - Correlate SonarCloud findings with local codebase
29
+ </capabilities>
30
+
31
+ <constraints>
32
+ - Always use environment variables: $SONARCLOUD_TOKEN, $SONARCLOUD_ORG, $SONARCLOUD_PROJECT
33
+ - Load credentials from .env.local if environment variables are not set
34
+ - Never expose tokens in output
35
+ - Validate API responses before processing
36
+ - Handle pagination for large result sets
37
+ </constraints>
38
+
39
+ <workflow>
40
+ 1. Load environment variables (check .env.local if needed: `source .env.local 2>/dev/null || true`)
41
+ 2. Verify credentials are available
42
+ 3. Determine the analysis scope (project, branch, PR)
43
+ 4. Query relevant endpoints
44
+ 5. Process and correlate results
45
+ 6. Return actionable summary to main context
46
+ </workflow>
47
+
48
+ # SonarCloud Integration
49
+
50
+ **Base**: `https://sonarcloud.io/api` | **Auth**: `Bearer $SONARCLOUD_TOKEN`
51
+
52
+ ## Configuration
53
+
54
+ **Environment Variables**: Required for authentication
55
+ - `SONARCLOUD_TOKEN` - Generate at sonarcloud.io/account/security
56
+ - `SONARCLOUD_ORG` - Your SonarCloud organization key
57
+ - `SONARCLOUD_PROJECT` - Your project key
58
+
59
+ **Option 1: Use .env.local** (Recommended)
60
+ Add to your project's `.env.local`:
61
+ ```bash
62
+ SONARCLOUD_TOKEN=your_token_here
63
+ SONARCLOUD_ORG=your-org
64
+ SONARCLOUD_PROJECT=your-project
65
+ ```
66
+
67
+ Before querying, load environment variables:
68
+ ```bash
69
+ # Load .env.local into current environment
70
+ export $(grep -v '^#' .env.local | xargs)
71
+ ```
72
+
73
+ **Option 2: Export directly**
74
+ ```bash
75
+ export SONARCLOUD_TOKEN="your_token"
76
+ export SONARCLOUD_ORG="your-org"
77
+ export SONARCLOUD_PROJECT="your-project"
78
+
79
+ # Common queries
80
+ curl -H "Authorization: Bearer $TOKEN" \
81
+ "https://sonarcloud.io/api/issues/search?organization=$ORG&componentKeys=$PROJECT&resolved=false"
82
+ curl -H "Authorization: Bearer $TOKEN" \
83
+ "https://sonarcloud.io/api/measures/component?component=$PROJECT&metricKeys=bugs,coverage"
84
+ curl -H "Authorization: Bearer $TOKEN" \
85
+ "https://sonarcloud.io/api/qualitygates/project_status?projectKey=$PROJECT"
86
+ ```
87
+
88
+ ## Endpoints
89
+
90
+ | Endpoint | Purpose | Key Params |
91
+ | ------------------------------- | ------------------------ | ---------------------------------------- |
92
+ | `/api/issues/search` | Bugs, vulnerabilities | `types`, `severities`, `branch`, `pullRequest` |
93
+ | `/api/measures/component` | Coverage, complexity | `metricKeys`, `branch`, `pullRequest` |
94
+ | `/api/qualitygates/project_status` | Pass/fail status | `projectKey`, `branch`, `pullRequest` |
95
+ | `/api/hotspots/search` | Security hotspots | `projectKey`, `status` |
96
+ | `/api/projects/search` | List projects | `organization`, `q` |
97
+ | `/api/project_analyses/search` | Analysis history | `project`, `from`, `to` |
98
+ | `/api/measures/search_history` | Metrics over time | `component`, `metrics`, `from` |
99
+ | `/api/components/tree` | Files with metrics | `qualifiers=FIL`, `metricKeys` |
100
+ | `/api/duplications/show` | Duplicate code blocks | `key` (file key), `branch` |
101
+ | `/api/sources/raw` | Raw source code | `key` (file key), `branch` |
102
+ | `/api/sources/scm` | SCM blame info | `key`, `from`, `to` |
103
+ | `/api/ce/activity` | Background tasks | `component`, `status`, `type` |
104
+ | `/api/qualityprofiles/search` | Quality profiles | `language`, `project` |
105
+ | `/api/languages/list` | Supported languages | - |
106
+ | `/api/project_branches/list` | Project branches | `project` |
107
+ | `/api/project_badges/measure` | SVG badge | `project`, `metric`, `branch` |
108
+ | `/api/rules/search` | Coding rules | `languages`, `severities`, `types` |
109
+
110
+ ## Common Filters
111
+
112
+ **Issues**: `types=BUG,VULNERABILITY,CODE_SMELL` | `severities=BLOCKER,CRITICAL,MAJOR` | `resolved=false` | `inNewCodePeriod=true`
113
+
114
+ **Metrics**: `bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density,sqale_rating,reliability_rating,security_rating`
115
+
116
+ **New Code**: `new_bugs,new_vulnerabilities,new_coverage,new_duplicated_lines_density`
117
+
118
+ ## Workflows
119
+
120
+ ### Health Check
121
+
122
+ ```bash
123
+ curl ... "/api/qualitygates/project_status?projectKey=$PROJECT"
124
+ curl ... "/api/measures/component?component=$PROJECT&metricKeys=bugs,vulnerabilities,coverage,sqale_rating"
125
+ curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&resolved=false&facets=severities,types&ps=1"
126
+ ```
127
+
128
+ ### PR Analysis
129
+
130
+ ```bash
131
+ curl ... "/api/qualitygates/project_status?projectKey=$PROJECT&pullRequest=123"
132
+ curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&pullRequest=123&resolved=false"
133
+ curl ... "/api/measures/component?component=$PROJECT&pullRequest=123&metricKeys=new_bugs,new_coverage"
134
+ ```
135
+
136
+ ### Security Audit
137
+
138
+ ```bash
139
+ curl ... "/api/issues/search?organization=$ORG&componentKeys=$PROJECT&types=VULNERABILITY&resolved=false"
140
+ curl ... "/api/hotspots/search?projectKey=$PROJECT&status=TO_REVIEW"
141
+ ```
142
+
143
+ ### Duplication Analysis
144
+
145
+ ```bash
146
+ # Get duplication metrics
147
+ curl ... "/api/measures/component?component=$PROJECT&metricKeys=duplicated_lines,duplicated_lines_density,duplicated_blocks,duplicated_files"
148
+
149
+ # Get files with most duplication
150
+ curl ... "/api/components/tree?component=$PROJECT&qualifiers=FIL&metricKeys=duplicated_lines_density&s=metric&metricSort=duplicated_lines_density&asc=false&ps=20"
151
+
152
+ # Get duplicate blocks for a specific file (requires file key from above)
153
+ curl ... "/api/duplications/show?key=my-project:src/utils/helpers.ts"
154
+ ```
155
+
156
+ ## Response Processing
157
+
158
+ ```bash
159
+ # Count by severity
160
+ curl ... | jq '.issues | group_by(.severity) | map({severity: .[0].severity, count: length})'
161
+
162
+ # Failed quality gate conditions
163
+ curl ... | jq '.projectStatus.conditions | map(select(.status == "ERROR"))'
164
+
165
+ # Metrics as key-value
166
+ curl ... | jq '.component.measures | map({(.metric): .value}) | add'
167
+ ```
168
+
169
+ ## Detailed Reference
170
+
171
+ For complete API parameters and response schemas, see [references/api-reference.md](references/api-reference.md).
@@ -1,27 +1,27 @@
1
- # Eval Sets
2
-
3
- These eval files use a flat JSON array format targeting `scripts/eval_win.py`:
4
-
5
- ```json
6
- [{"query": "...", "should_trigger": true}]
7
- ```
8
-
9
- This is **not** compatible with the skill-creator plugin's `run_loop.py` which expects:
10
-
11
- ```json
12
- {"skill_name": "...", "evals": [{"id": "...", "prompt": "...", "should_trigger": true}]}
13
- ```
14
-
15
- To convert for `run_loop.py`:
16
-
17
- ```bash
18
- python3 -c "
19
- import json, pathlib, uuid
20
- data = json.loads(pathlib.Path('evals.json').read_text())
21
- out = {'skill_name': 'SKILL-NAME-HERE', 'evals': [
22
- {'id': str(uuid.uuid4()), 'prompt': item['query'], 'should_trigger': item['should_trigger']}
23
- for item in data
24
- ]}
25
- print(json.dumps(out, indent=2))
26
- " > evals_skill_creator.json
27
- ```
1
+ # Eval Sets
2
+
3
+ These eval files use a flat JSON array format targeting `scripts/eval_win.py`:
4
+
5
+ ```json
6
+ [{"query": "...", "should_trigger": true}]
7
+ ```
8
+
9
+ This is **not** compatible with the skill-creator plugin's `run_loop.py` which expects:
10
+
11
+ ```json
12
+ {"skill_name": "...", "evals": [{"id": "...", "prompt": "...", "should_trigger": true}]}
13
+ ```
14
+
15
+ To convert for `run_loop.py`:
16
+
17
+ ```bash
18
+ python3 -c "
19
+ import json, pathlib, uuid
20
+ data = json.loads(pathlib.Path('evals.json').read_text())
21
+ out = {'skill_name': 'SKILL-NAME-HERE', 'evals': [
22
+ {'id': str(uuid.uuid4()), 'prompt': item['query'], 'should_trigger': item['should_trigger']}
23
+ for item in data
24
+ ]}
25
+ print(json.dumps(out, indent=2))
26
+ " > evals_skill_creator.json
27
+ ```
@@ -1,50 +1,50 @@
1
- [
2
- {
3
- "query": "Check the SonarCloud quality gate status for our latest PR — I want to see if there are any blockers before we can merge, especially around security vulnerabilities and code coverage",
4
- "should_trigger": true
5
- },
6
- {
7
- "query": "Pull the SonarCloud analysis results for our project — show me all the critical and major security vulnerabilities found in the last scan, with file locations and remediation guidance",
8
- "should_trigger": true
9
- },
10
- {
11
- "query": "We're in /review and SonarCloud flagged some issues — get the full list of code smells, bugs, and vulnerabilities from the latest analysis so I can address them before the quality gate passes",
12
- "should_trigger": true
13
- },
14
- {
15
- "query": "What's our current technical debt ratio in SonarCloud? Show me the metrics dashboard — maintainability rating, reliability rating, security rating, and coverage percentage",
16
- "should_trigger": true
17
- },
18
- {
19
- "query": "The SonarCloud quality gate is failing on our PR — pull the specific issues that are blocking it and show me what needs to be fixed, sorted by severity",
20
- "should_trigger": true
21
- },
22
- {
23
- "query": "Get the SonarCloud code coverage report for our project — I want to see which modules have low coverage and identify the files that need more tests before our next release",
24
- "should_trigger": true
25
- },
26
- {
27
- "query": "Implement a new REST API endpoint for user profile management with CRUD operations, input validation, and proper error handling",
28
- "should_trigger": false
29
- },
30
- {
31
- "query": "Search for best practices around implementing OAuth2 PKCE flow in a Node.js application",
32
- "should_trigger": false
33
- },
34
- {
35
- "query": "Write a comprehensive market analysis of the DevSecOps tools landscape covering SAST, DAST, and SCA vendors",
36
- "should_trigger": false
37
- },
38
- {
39
- "query": "Scrape https://docs.sonarcloud.io and extract the full list of supported languages and analysis rules",
40
- "should_trigger": false
41
- },
42
- {
43
- "query": "Build a structured company profile for SonarSource — return JSON with founding year, funding, products, and competitive positioning",
44
- "should_trigger": false
45
- },
46
- {
47
- "query": "Add proper citations to docs/research/security-audit-findings.md following our project's citation standards",
48
- "should_trigger": false
49
- }
50
- ]
1
+ [
2
+ {
3
+ "query": "Check the SonarCloud quality gate status for our latest PR — I want to see if there are any blockers before we can merge, especially around security vulnerabilities and code coverage",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Pull the SonarCloud analysis results for our project — show me all the critical and major security vulnerabilities found in the last scan, with file locations and remediation guidance",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "We're in /review and SonarCloud flagged some issues — get the full list of code smells, bugs, and vulnerabilities from the latest analysis so I can address them before the quality gate passes",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "What's our current technical debt ratio in SonarCloud? Show me the metrics dashboard — maintainability rating, reliability rating, security rating, and coverage percentage",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "The SonarCloud quality gate is failing on our PR — pull the specific issues that are blocking it and show me what needs to be fixed, sorted by severity",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Get the SonarCloud code coverage report for our project — I want to see which modules have low coverage and identify the files that need more tests before our next release",
24
+ "should_trigger": true
25
+ },
26
+ {
27
+ "query": "Implement a new REST API endpoint for user profile management with CRUD operations, input validation, and proper error handling",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Search for best practices around implementing OAuth2 PKCE flow in a Node.js application",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Write a comprehensive market analysis of the DevSecOps tools landscape covering SAST, DAST, and SCA vendors",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "Scrape https://docs.sonarcloud.io and extract the full list of supported languages and analysis rules",
40
+ "should_trigger": false
41
+ },
42
+ {
43
+ "query": "Build a structured company profile for SonarSource — return JSON with founding year, funding, products, and competitive positioning",
44
+ "should_trigger": false
45
+ },
46
+ {
47
+ "query": "Add proper citations to docs/research/security-audit-findings.md following our project's citation standards",
48
+ "should_trigger": false
49
+ }
50
+ ]