octocode-cli 1.2.6 → 1.2.7

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 (303) hide show
  1. package/LICENSE +21 -63
  2. package/README.md +85 -142
  3. package/out/octocode-cli.js +7026 -6945
  4. package/package.json +8 -6
  5. package/skills/README.md +97 -120
  6. package/skills/octocode-code-engineer/.claude/settings.local.json +18 -0
  7. package/skills/octocode-code-engineer/.octocode/rfc/RFC-code-engineer-weakness-fixes.md +255 -0
  8. package/skills/octocode-code-engineer/.plan/VALIDATED_PLAN.md +223 -0
  9. package/skills/octocode-code-engineer/README.md +178 -0
  10. package/skills/octocode-code-engineer/SKILL.md +418 -0
  11. package/skills/octocode-code-engineer/coverage/architecture.ts.html +7828 -0
  12. package/skills/octocode-code-engineer/coverage/ast-helpers.ts.html +211 -0
  13. package/skills/octocode-code-engineer/coverage/ast-search.ts.html +1795 -0
  14. package/skills/octocode-code-engineer/coverage/base.css +224 -0
  15. package/skills/octocode-code-engineer/coverage/block-navigation.js +87 -0
  16. package/skills/octocode-code-engineer/coverage/cache.ts.html +376 -0
  17. package/skills/octocode-code-engineer/coverage/cli.ts.html +982 -0
  18. package/skills/octocode-code-engineer/coverage/clover.xml +3217 -0
  19. package/skills/octocode-code-engineer/coverage/collect-effects.ts.html +664 -0
  20. package/skills/octocode-code-engineer/coverage/collect-input-sources.ts.html +577 -0
  21. package/skills/octocode-code-engineer/coverage/collect-performance.ts.html +331 -0
  22. package/skills/octocode-code-engineer/coverage/collect-prototype-pollution.ts.html +421 -0
  23. package/skills/octocode-code-engineer/coverage/collect-security.ts.html +604 -0
  24. package/skills/octocode-code-engineer/coverage/collect-test-profile.ts.html +589 -0
  25. package/skills/octocode-code-engineer/coverage/coverage-final.json +30 -0
  26. package/skills/octocode-code-engineer/coverage/dependencies.ts.html +997 -0
  27. package/skills/octocode-code-engineer/coverage/dependency-summary.ts.html +688 -0
  28. package/skills/octocode-code-engineer/coverage/discovery.ts.html +322 -0
  29. package/skills/octocode-code-engineer/coverage/favicon.png +0 -0
  30. package/skills/octocode-code-engineer/coverage/graph-analytics.ts.html +1510 -0
  31. package/skills/octocode-code-engineer/coverage/index.html +536 -0
  32. package/skills/octocode-code-engineer/coverage/index.ts.html +826 -0
  33. package/skills/octocode-code-engineer/coverage/metrics.ts.html +553 -0
  34. package/skills/octocode-code-engineer/coverage/pipeline.ts.html +2044 -0
  35. package/skills/octocode-code-engineer/coverage/prettify.css +1 -0
  36. package/skills/octocode-code-engineer/coverage/prettify.js +2 -0
  37. package/skills/octocode-code-engineer/coverage/report-analysis.ts.html +1570 -0
  38. package/skills/octocode-code-engineer/coverage/report-writer.ts.html +1102 -0
  39. package/skills/octocode-code-engineer/coverage/security-detectors.ts.html +1747 -0
  40. package/skills/octocode-code-engineer/coverage/semantic-detectors.ts.html +2152 -0
  41. package/skills/octocode-code-engineer/coverage/semantic.ts.html +1897 -0
  42. package/skills/octocode-code-engineer/coverage/sort-arrow-sprite.png +0 -0
  43. package/skills/octocode-code-engineer/coverage/sorter.js +210 -0
  44. package/skills/octocode-code-engineer/coverage/summary-md.ts.html +1222 -0
  45. package/skills/octocode-code-engineer/coverage/test-quality-detectors.ts.html +1039 -0
  46. package/skills/octocode-code-engineer/coverage/tree-sitter-analyzer.ts.html +955 -0
  47. package/skills/octocode-code-engineer/coverage/ts-analyzer.ts.html +1213 -0
  48. package/skills/octocode-code-engineer/coverage/types.ts.html +2473 -0
  49. package/skills/octocode-code-engineer/coverage/utils.ts.html +820 -0
  50. package/skills/octocode-code-engineer/eslint.config.mjs +54 -0
  51. package/skills/octocode-code-engineer/minify-scripts.mjs +32 -0
  52. package/skills/octocode-code-engineer/package.json +54 -0
  53. package/skills/octocode-code-engineer/references/agent-ast-reading-rfc.md +95 -0
  54. package/skills/octocode-code-engineer/references/architecture-techniques.md +121 -0
  55. package/skills/octocode-code-engineer/references/ast-search.md +210 -0
  56. package/skills/octocode-code-engineer/references/ast-tree-search.md +151 -0
  57. package/skills/octocode-code-engineer/references/cli-reference.md +167 -0
  58. package/skills/octocode-code-engineer/references/concepts.md +107 -0
  59. package/skills/octocode-code-engineer/references/finding-categories.md +128 -0
  60. package/skills/octocode-code-engineer/references/improvement-roadmap.md +304 -0
  61. package/skills/octocode-code-engineer/references/output-files.md +144 -0
  62. package/skills/octocode-code-engineer/references/playbooks.md +204 -0
  63. package/skills/octocode-code-engineer/references/present-results.md +136 -0
  64. package/skills/octocode-code-engineer/references/tool-workflows.md +566 -0
  65. package/skills/octocode-code-engineer/references/validate-investigate.md +225 -0
  66. package/skills/octocode-code-engineer/scripts/analysis/dependencies.js +1 -0
  67. package/skills/octocode-code-engineer/scripts/analysis/dependency-summary.js +1 -0
  68. package/skills/octocode-code-engineer/scripts/analysis/discovery.js +1 -0
  69. package/skills/octocode-code-engineer/scripts/analysis/graph-analytics.js +1 -0
  70. package/skills/octocode-code-engineer/scripts/analysis/semantic.js +1 -0
  71. package/skills/octocode-code-engineer/scripts/ast/helpers.js +1 -0
  72. package/skills/octocode-code-engineer/scripts/ast/metrics.js +1 -0
  73. package/skills/octocode-code-engineer/scripts/ast/search.js +2 -0
  74. package/skills/octocode-code-engineer/scripts/ast/tree-search.js +2 -0
  75. package/skills/octocode-code-engineer/scripts/ast/tree-sitter.js +1 -0
  76. package/skills/octocode-code-engineer/scripts/ast/ts-analyzer.js +1 -0
  77. package/skills/octocode-code-engineer/scripts/collectors/chains.js +1 -0
  78. package/skills/octocode-code-engineer/scripts/collectors/effects.js +1 -0
  79. package/skills/octocode-code-engineer/scripts/collectors/input-sources.js +1 -0
  80. package/skills/octocode-code-engineer/scripts/collectors/performance.js +1 -0
  81. package/skills/octocode-code-engineer/scripts/collectors/prototype-pollution.js +1 -0
  82. package/skills/octocode-code-engineer/scripts/collectors/security.js +1 -0
  83. package/skills/octocode-code-engineer/scripts/collectors/test-profile.js +1 -0
  84. package/skills/octocode-code-engineer/scripts/common/is-direct-run.js +1 -0
  85. package/skills/octocode-code-engineer/scripts/common/utils.js +1 -0
  86. package/skills/octocode-code-engineer/scripts/detectors/code-quality.js +1 -0
  87. package/skills/octocode-code-engineer/scripts/detectors/cohesion.js +1 -0
  88. package/skills/octocode-code-engineer/scripts/detectors/coupling.js +1 -0
  89. package/skills/octocode-code-engineer/scripts/detectors/cycle.js +1 -0
  90. package/skills/octocode-code-engineer/scripts/detectors/dead-code.js +1 -0
  91. package/skills/octocode-code-engineer/scripts/detectors/import-style.js +1 -0
  92. package/skills/octocode-code-engineer/scripts/detectors/index.js +1 -0
  93. package/skills/octocode-code-engineer/scripts/detectors/security.js +1 -0
  94. package/skills/octocode-code-engineer/scripts/detectors/semantic.js +1 -0
  95. package/skills/octocode-code-engineer/scripts/detectors/shared.js +1 -0
  96. package/skills/octocode-code-engineer/scripts/detectors/test-quality.js +1 -0
  97. package/skills/octocode-code-engineer/scripts/index.js +1 -0
  98. package/skills/octocode-code-engineer/scripts/pipeline/cache.js +1 -0
  99. package/skills/octocode-code-engineer/scripts/pipeline/cli.js +1 -0
  100. package/skills/octocode-code-engineer/scripts/pipeline/main.js +2 -0
  101. package/skills/octocode-code-engineer/scripts/reporting/analysis.js +1 -0
  102. package/skills/octocode-code-engineer/scripts/reporting/summary-md.js +1 -0
  103. package/skills/octocode-code-engineer/scripts/reporting/writer.js +1 -0
  104. package/skills/octocode-code-engineer/scripts/types/constants.js +1 -0
  105. package/skills/octocode-code-engineer/scripts/types/index.js +1 -0
  106. package/skills/octocode-code-engineer/scripts/types/interfaces.js +1 -0
  107. package/skills/octocode-code-engineer/src/analysis/dependencies.test.ts +545 -0
  108. package/skills/octocode-code-engineer/src/analysis/dependencies.ts +406 -0
  109. package/skills/octocode-code-engineer/src/analysis/dependency-summary.test.ts +566 -0
  110. package/skills/octocode-code-engineer/src/analysis/dependency-summary.ts +257 -0
  111. package/skills/octocode-code-engineer/src/analysis/discovery.test.ts +420 -0
  112. package/skills/octocode-code-engineer/src/analysis/discovery.ts +87 -0
  113. package/skills/octocode-code-engineer/src/analysis/graph-analytics.test.ts +449 -0
  114. package/skills/octocode-code-engineer/src/analysis/graph-analytics.ts +534 -0
  115. package/skills/octocode-code-engineer/src/analysis/semantic.test.ts +1533 -0
  116. package/skills/octocode-code-engineer/src/analysis/semantic.ts +830 -0
  117. package/skills/octocode-code-engineer/src/ast/helpers.test.ts +185 -0
  118. package/skills/octocode-code-engineer/src/ast/helpers.ts +62 -0
  119. package/skills/octocode-code-engineer/src/ast/metrics.test.ts +304 -0
  120. package/skills/octocode-code-engineer/src/ast/metrics.ts +204 -0
  121. package/skills/octocode-code-engineer/src/ast/search.test.ts +647 -0
  122. package/skills/octocode-code-engineer/src/ast/search.ts +648 -0
  123. package/skills/octocode-code-engineer/src/ast/tree-search.test.ts +199 -0
  124. package/skills/octocode-code-engineer/src/ast/tree-search.ts +392 -0
  125. package/skills/octocode-code-engineer/src/ast/tree-sitter.test.ts +407 -0
  126. package/skills/octocode-code-engineer/src/ast/tree-sitter.ts +402 -0
  127. package/skills/octocode-code-engineer/src/ast/ts-analyzer.test.ts +1864 -0
  128. package/skills/octocode-code-engineer/src/ast/ts-analyzer.ts +509 -0
  129. package/skills/octocode-code-engineer/src/collectors/chains.ts +74 -0
  130. package/skills/octocode-code-engineer/src/collectors/effects.test.ts +490 -0
  131. package/skills/octocode-code-engineer/src/collectors/effects.ts +332 -0
  132. package/skills/octocode-code-engineer/src/collectors/input-sources.test.ts +144 -0
  133. package/skills/octocode-code-engineer/src/collectors/input-sources.ts +196 -0
  134. package/skills/octocode-code-engineer/src/collectors/performance.test.ts +82 -0
  135. package/skills/octocode-code-engineer/src/collectors/performance.ts +141 -0
  136. package/skills/octocode-code-engineer/src/collectors/prototype-pollution.test.ts +55 -0
  137. package/skills/octocode-code-engineer/src/collectors/prototype-pollution.ts +162 -0
  138. package/skills/octocode-code-engineer/src/collectors/security.test.ts +124 -0
  139. package/skills/octocode-code-engineer/src/collectors/security.ts +309 -0
  140. package/skills/octocode-code-engineer/src/collectors/test-profile.test.ts +97 -0
  141. package/skills/octocode-code-engineer/src/collectors/test-profile.ts +269 -0
  142. package/skills/octocode-code-engineer/src/common/is-direct-run.test.ts +32 -0
  143. package/skills/octocode-code-engineer/src/common/is-direct-run.ts +13 -0
  144. package/skills/octocode-code-engineer/src/common/utils.test.ts +463 -0
  145. package/skills/octocode-code-engineer/src/common/utils.ts +304 -0
  146. package/skills/octocode-code-engineer/src/detectors/code-quality.ts +966 -0
  147. package/skills/octocode-code-engineer/src/detectors/cohesion.ts +539 -0
  148. package/skills/octocode-code-engineer/src/detectors/coupling.ts +323 -0
  149. package/skills/octocode-code-engineer/src/detectors/cycle.ts +349 -0
  150. package/skills/octocode-code-engineer/src/detectors/dead-code.ts +320 -0
  151. package/skills/octocode-code-engineer/src/detectors/import-style.ts +376 -0
  152. package/skills/octocode-code-engineer/src/detectors/index.test.ts +3061 -0
  153. package/skills/octocode-code-engineer/src/detectors/index.ts +88 -0
  154. package/skills/octocode-code-engineer/src/detectors/security.test.ts +882 -0
  155. package/skills/octocode-code-engineer/src/detectors/security.ts +821 -0
  156. package/skills/octocode-code-engineer/src/detectors/semantic.ts +758 -0
  157. package/skills/octocode-code-engineer/src/detectors/shared.ts +49 -0
  158. package/skills/octocode-code-engineer/src/detectors/test-quality.test.ts +388 -0
  159. package/skills/octocode-code-engineer/src/detectors/test-quality.ts +367 -0
  160. package/skills/octocode-code-engineer/src/index.test.ts +4425 -0
  161. package/skills/octocode-code-engineer/src/index.ts +403 -0
  162. package/skills/octocode-code-engineer/src/pipeline/cache.test.ts +199 -0
  163. package/skills/octocode-code-engineer/src/pipeline/cache.ts +130 -0
  164. package/skills/octocode-code-engineer/src/pipeline/cli.test.ts +493 -0
  165. package/skills/octocode-code-engineer/src/pipeline/cli.ts +344 -0
  166. package/skills/octocode-code-engineer/src/pipeline/main.test.ts +174 -0
  167. package/skills/octocode-code-engineer/src/pipeline/main.ts +1074 -0
  168. package/skills/octocode-code-engineer/src/pipeline.test.ts +84 -0
  169. package/skills/octocode-code-engineer/src/reporting/analysis.test.ts +782 -0
  170. package/skills/octocode-code-engineer/src/reporting/analysis.ts +688 -0
  171. package/skills/octocode-code-engineer/src/reporting/output-contract.test.ts +463 -0
  172. package/skills/octocode-code-engineer/src/reporting/summary-md.test.ts +421 -0
  173. package/skills/octocode-code-engineer/src/reporting/summary-md.ts +714 -0
  174. package/skills/octocode-code-engineer/src/reporting/writer.ts +430 -0
  175. package/skills/octocode-code-engineer/src/sanity.test.ts +47 -0
  176. package/skills/octocode-code-engineer/src/types/constants.ts +248 -0
  177. package/skills/octocode-code-engineer/src/types/index.ts +80 -0
  178. package/skills/octocode-code-engineer/src/types/interfaces.ts +682 -0
  179. package/skills/octocode-code-engineer/tsconfig.json +17 -0
  180. package/skills/octocode-code-engineer/vitest.config.ts +8 -0
  181. package/skills/octocode-documentation-writer/README.md +113 -0
  182. package/skills/octocode-documentation-writer/SKILL.md +886 -0
  183. package/skills/octocode-documentation-writer/references/agent-discovery-analysis.md +453 -0
  184. package/skills/octocode-documentation-writer/references/agent-documentation-writer.md +255 -0
  185. package/skills/octocode-documentation-writer/references/agent-engineer-questions.md +247 -0
  186. package/skills/octocode-documentation-writer/references/agent-orchestrator.md +370 -0
  187. package/skills/octocode-documentation-writer/references/agent-qa-validator.md +227 -0
  188. package/skills/octocode-documentation-writer/references/agent-researcher.md +250 -0
  189. package/skills/octocode-documentation-writer/schemas/analysis-schema.json +886 -0
  190. package/skills/octocode-documentation-writer/schemas/discovery-tasks.json +96 -0
  191. package/skills/octocode-documentation-writer/schemas/documentation-structure.json +373 -0
  192. package/skills/octocode-documentation-writer/schemas/partial-discovery-schema.json +102 -0
  193. package/skills/octocode-documentation-writer/schemas/partial-research-schema.json +98 -0
  194. package/skills/octocode-documentation-writer/schemas/qa-results-schema.json +113 -0
  195. package/skills/octocode-documentation-writer/schemas/questions-schema.json +228 -0
  196. package/skills/octocode-documentation-writer/schemas/research-schema.json +104 -0
  197. package/skills/octocode-documentation-writer/schemas/state-schema.json +222 -0
  198. package/skills/octocode-documentation-writer/schemas/work-assignments-schema.json +74 -0
  199. package/skills/octocode-plan/SKILL.md +122 -116
  200. package/skills/octocode-prompt-optimizer/SKILL.md +617 -0
  201. package/skills/octocode-pull-request-reviewer/README.md +249 -0
  202. package/skills/octocode-pull-request-reviewer/SKILL.md +479 -0
  203. package/skills/octocode-pull-request-reviewer/references/dependency-check.md +74 -0
  204. package/skills/octocode-pull-request-reviewer/references/domain-reviewers.md +24 -0
  205. package/skills/octocode-pull-request-reviewer/references/execution-lifecycle.md +441 -0
  206. package/skills/octocode-pull-request-reviewer/references/flow-analysis-protocol.md +64 -0
  207. package/skills/octocode-pull-request-reviewer/references/output-template.md +174 -0
  208. package/skills/octocode-pull-request-reviewer/references/parallel-agent-protocol.md +182 -0
  209. package/skills/octocode-pull-request-reviewer/references/review-guidelines.md +26 -0
  210. package/skills/octocode-pull-request-reviewer/references/verification-checklist.md +40 -0
  211. package/skills/octocode-research/.claude/settings.local.json +46 -0
  212. package/skills/octocode-research/.octocode/plan/code-review-fixes/plan.md +312 -0
  213. package/skills/octocode-research/.octocode/plan/code-review-fixes/research.md +212 -0
  214. package/skills/octocode-research/.octocode/plans/NODE_SERVER_START_PLAN.md +755 -0
  215. package/skills/octocode-research/.octocode/research/code-review/research.md +371 -0
  216. package/skills/octocode-research/.octocode/review/IMPROVEMENTS.md +391 -0
  217. package/skills/octocode-research/.octocode/review/REVIEW_PLAN.md +289 -0
  218. package/skills/octocode-research/.octocode/review/REVIEW_REPORT.md +356 -0
  219. package/skills/octocode-research/AGENTS.md +349 -0
  220. package/skills/octocode-research/README.md +494 -0
  221. package/skills/octocode-research/SKILL.md +652 -274
  222. package/skills/octocode-research/docs/API_REFERENCE.md +562 -0
  223. package/skills/octocode-research/docs/ARCHITECTURE.md +554 -0
  224. package/skills/octocode-research/docs/FLOWS.md +577 -0
  225. package/skills/octocode-research/docs/OVERVIEW.md +564 -0
  226. package/skills/octocode-research/docs/SERVER_FLOWS.md +631 -0
  227. package/skills/octocode-research/ecosystem.config.cjs +88 -0
  228. package/skills/octocode-research/eslint.config.mjs +27 -0
  229. package/skills/octocode-research/package.json +84 -0
  230. package/skills/octocode-research/references/GUARDRAILS.md +40 -0
  231. package/skills/octocode-research/references/PARALLEL_AGENT_PROTOCOL.md +178 -0
  232. package/skills/octocode-research/references/roast-prompt.md +149 -0
  233. package/skills/octocode-research/scripts/server-init.d.ts +2 -0
  234. package/skills/octocode-research/scripts/server-init.js +2 -0
  235. package/skills/octocode-research/scripts/server.d.ts +8 -0
  236. package/skills/octocode-research/scripts/server.js +445 -0
  237. package/skills/octocode-research/src/__tests__/integration/circuitBreaker.test.ts +205 -0
  238. package/skills/octocode-research/src/__tests__/integration/routes.test.ts +374 -0
  239. package/skills/octocode-research/src/__tests__/unit/circuitBreaker.test.ts +245 -0
  240. package/skills/octocode-research/src/__tests__/unit/errorHandler.test.ts +183 -0
  241. package/skills/octocode-research/src/__tests__/unit/httpPreprocess.test.ts +157 -0
  242. package/skills/octocode-research/src/__tests__/unit/logger.test.ts +143 -0
  243. package/skills/octocode-research/src/__tests__/unit/queryParser.test.ts +130 -0
  244. package/skills/octocode-research/src/__tests__/unit/responseBuilder.test.ts +469 -0
  245. package/skills/octocode-research/src/__tests__/unit/retry.test.ts +205 -0
  246. package/skills/octocode-research/src/index.ts +186 -0
  247. package/skills/octocode-research/src/mcpCache.ts +49 -0
  248. package/skills/octocode-research/src/middleware/errorHandler.ts +65 -0
  249. package/skills/octocode-research/src/middleware/logger.ts +61 -0
  250. package/skills/octocode-research/src/middleware/queryParser.ts +115 -0
  251. package/skills/octocode-research/src/middleware/readiness.ts +17 -0
  252. package/skills/octocode-research/src/routes/github.ts +197 -0
  253. package/skills/octocode-research/src/routes/local.ts +175 -0
  254. package/skills/octocode-research/src/routes/lsp.ts +177 -0
  255. package/skills/octocode-research/src/routes/package.ts +127 -0
  256. package/skills/octocode-research/src/routes/prompts.ts +138 -0
  257. package/skills/octocode-research/src/routes/tools.ts +677 -0
  258. package/skills/octocode-research/src/server-init.ts +363 -0
  259. package/skills/octocode-research/src/server.ts +285 -0
  260. package/skills/octocode-research/src/types/errorGuards.ts +151 -0
  261. package/skills/octocode-research/src/types/express.d.ts +76 -0
  262. package/skills/octocode-research/src/types/guards.ts +98 -0
  263. package/skills/octocode-research/src/types/mcp.ts +119 -0
  264. package/skills/octocode-research/src/types/responses.ts +199 -0
  265. package/skills/octocode-research/src/types/toolTypes.ts +33 -0
  266. package/skills/octocode-research/src/utils/asyncTimeout.ts +116 -0
  267. package/skills/octocode-research/src/utils/circuitBreaker.ts +492 -0
  268. package/skills/octocode-research/src/utils/colors.ts +53 -0
  269. package/skills/octocode-research/src/utils/errorQueue.ts +71 -0
  270. package/skills/octocode-research/src/utils/logEmoji.ts +103 -0
  271. package/skills/octocode-research/src/utils/logger.ts +413 -0
  272. package/skills/octocode-research/src/utils/resilience.ts +169 -0
  273. package/skills/octocode-research/src/utils/responseBuilder.ts +495 -0
  274. package/skills/octocode-research/src/utils/responseFactory.ts +100 -0
  275. package/skills/octocode-research/src/utils/responseParser.ts +272 -0
  276. package/skills/octocode-research/src/utils/retry.ts +280 -0
  277. package/skills/octocode-research/src/utils/routeFactory.ts +117 -0
  278. package/skills/octocode-research/src/utils/url.ts +20 -0
  279. package/skills/octocode-research/src/validation/httpPreprocess.ts +155 -0
  280. package/skills/octocode-research/src/validation/index.ts +2 -0
  281. package/skills/octocode-research/src/validation/schemas.ts +578 -0
  282. package/skills/octocode-research/src/validation/toolCallSchema.ts +132 -0
  283. package/skills/octocode-research/tsconfig.json +21 -0
  284. package/skills/octocode-research/tsdown.config.ts +42 -0
  285. package/skills/octocode-research/vitest.config.ts +20 -0
  286. package/skills/octocode-researcher/SKILL.md +461 -0
  287. package/skills/octocode-researcher/references/fallbacks.md +120 -0
  288. package/skills/{octocode-local-search → octocode-researcher}/references/tool-reference.md +132 -49
  289. package/skills/{octocode-local-search → octocode-researcher}/references/workflow-patterns.md +204 -4
  290. package/skills/octocode-rfc-generator/SKILL.md +223 -0
  291. package/skills/octocode-rfc-generator/references/rfc-template.md +193 -0
  292. package/skills/octocode-roast/SKILL.md +63 -21
  293. package/skills/octocode-implement/SKILL.md +0 -293
  294. package/skills/octocode-implement/references/execution-phases.md +0 -317
  295. package/skills/octocode-implement/references/tool-reference.md +0 -403
  296. package/skills/octocode-implement/references/workflow-patterns.md +0 -385
  297. package/skills/octocode-local-search/SKILL.md +0 -449
  298. package/skills/octocode-pr-review/SKILL.md +0 -391
  299. package/skills/octocode-pr-review/references/domain-reviewers.md +0 -105
  300. package/skills/octocode-pr-review/references/execution-lifecycle.md +0 -116
  301. package/skills/octocode-pr-review/references/research-flows.md +0 -75
  302. package/skills/octocode-research/references/tool-reference.md +0 -304
  303. package/skills/octocode-research/references/workflow-patterns.md +0 -325
@@ -1,11 +1,15 @@
1
- # Local Tools Reference
1
+ # Tools Reference
2
2
 
3
- Complete parameter reference for Octocode Local tools.
3
+ Complete parameter reference for Octocode tools (Local + External).
4
4
 
5
5
  **Required Fields (ALL queries)**: `mainResearchGoal`, `researchGoal`, `reasoning`
6
6
 
7
7
  ---
8
8
 
9
+ # Part 1: Local Tools
10
+
11
+ ---
12
+
9
13
  ## localViewStructure
10
14
 
11
15
  Explore local directory structure with filtering and sorting.
@@ -257,72 +261,151 @@ Parallelize independent searches (max 5 queries per call):
257
261
 
258
262
  ---
259
263
 
260
- ## Error Recovery
264
+ # Part 2: External Tools (GitHub & Packages)
265
+
266
+ ## githubSearchCode
267
+
268
+ Search code across GitHub repositories.
269
+
270
+ ```typescript
271
+ {
272
+ query: string; // Search query (required) — GitHub code search syntax
273
+ owner?: string; // Filter by repo owner
274
+ repo?: string; // Filter by repo name (requires owner)
275
+ language?: string; // Filter by language
276
+ path?: string; // Filter by file path
277
+ extension?: string; // Filter by file extension
278
+ filename?: string; // Filter by filename
279
+ resultsPerPage?: number; // Results per page
280
+ pageNumber?: number; // Page number
281
+ }
282
+ ```
261
283
 
262
- | Situation | Action |
263
- |-----------|--------|
264
- | Empty results | Try semantic variants (auth → login, security, credentials) |
265
- | Too many results | Add filters (path, type, include, excludeDir) |
266
- | File too large | Use `matchString` or `charLength` pagination |
267
- | Path not found | Verify with `localViewStructure` first |
268
- | Path is directory | Use `localViewStructure` instead |
269
- | .gitignore blocking | Use `noIgnore: true` (for node_modules) |
270
- | Special chars in pattern | Use `fixedString: true` |
284
+ **Tips:**
285
+ - Narrow to `owner`/`repo` ASAP for faster, more relevant results
286
+ - Use `path` to scope searches (e.g., `path:src/auth`)
287
+ - Use `extension` to filter by file type
288
+ - Combine with `githubGetFileContent` to read matched files
271
289
 
272
290
  ---
273
291
 
274
- ## Common Patterns
292
+ ## githubSearchRepositories
275
293
 
276
- ### 1. Discovery Read Pattern
277
- ```json
278
- // Step 1: Find files
279
- { "pattern": "useAuth", "path": "src", "filesOnly": true }
294
+ Find repositories by topic, language, stars.
280
295
 
281
- // Step 2: Read implementation (from step 1 results)
282
- { "path": "src/hooks/useAuth.ts", "matchString": "export function useAuth", "matchStringContextLines": 20 }
296
+ ```typescript
297
+ {
298
+ query: string; // Search query (required)
299
+ language?: string; // Filter by language
300
+ sort?: "stars" | "forks" | "updated"; // Sort order
301
+ order?: "asc" | "desc";
302
+ resultsPerPage?: number;
303
+ pageNumber?: number;
304
+ }
283
305
  ```
284
306
 
285
- ### 2. Trace Imports Pattern
286
- ```json
287
- // Step 1: Find import
288
- { "pattern": "import.*from 'axios'", "path": "src", "filesOnly": true }
307
+ **Tips:**
308
+ - Use for discovering repos when you don't know the exact name
309
+ - Sort by `stars` for popular/battle-tested repos
310
+ - Sort by `updated` for actively maintained repos
311
+
312
+ ---
313
+
314
+ ## githubViewRepoStructure
289
315
 
290
- // Step 2: Check node_modules
291
- { "pattern": "export default axios", "path": "node_modules/axios/lib", "noIgnore": true }
316
+ Explore external repo directory layout.
317
+
318
+ ```typescript
319
+ {
320
+ owner: string; // Repo owner (required)
321
+ repo: string; // Repo name (required)
322
+ branch?: string; // Branch name (default: main/master)
323
+ path?: string; // Sub-path within repo
324
+ depth?: number; // Directory depth (1-5)
325
+ }
292
326
  ```
293
327
 
294
- ### 3. Recent Changes Pattern
295
- ```json
296
- // Step 1: Find recent files
297
- { "path": "src", "name": "*.ts", "modifiedWithin": "3d" }
328
+ **Tips:**
329
+ - Use BEFORE `githubGetFileContent` to understand layout
330
+ - Start `depth: 1` at root, drill with `depth: 2` on specific dirs
331
+ - Identify `src/`, `lib/`, `packages/` for entry points
332
+
333
+ ---
334
+
335
+ ## githubGetFileContent
298
336
 
299
- // Step 2: Search within those files
300
- { "pattern": "TODO|FIXME", "path": "src/auth", "contextLines": 2 }
337
+ Read files from external GitHub repos.
338
+
339
+ ```typescript
340
+ {
341
+ owner: string; // Repo owner (required)
342
+ repo: string; // Repo name (required)
343
+ path: string; // File path (required)
344
+ branch?: string; // Branch name
345
+ matchString?: string; // Pattern to find within file
346
+ matchStringContextLines?: number; // Lines around match
347
+ }
301
348
  ```
302
349
 
303
- ### 4. Large File Pagination
304
- ```json
305
- // Window 1
306
- { "path": "dist/bundle.js", "charLength": 4000, "charOffset": 0 }
350
+ **Tips:**
351
+ - Use `matchString` for large files (avoid reading entire file)
352
+ - Use LAST in the external flow — after search/structure exploration
353
+ - Generate full GitHub URLs for references: `https://github.com/{owner}/{repo}/blob/{branch}/{path}`
307
354
 
308
- // Window 2
309
- { "path": "dist/bundle.js", "charLength": 4000, "charOffset": 4000 }
355
+ ---
356
+
357
+ ## githubSearchPullRequests
310
358
 
311
- // Window 3
312
- { "path": "dist/bundle.js", "charLength": 4000, "charOffset": 8000 }
359
+ Search PRs by query, state, labels.
360
+
361
+ ```typescript
362
+ {
363
+ query: string; // Search query (required)
364
+ owner?: string; // Repo owner
365
+ repo?: string; // Repo name
366
+ state?: "open" | "closed" | "merged";
367
+ sort?: "created" | "updated" | "comments";
368
+ order?: "asc" | "desc";
369
+ resultsPerPage?: number;
370
+ pageNumber?: number;
371
+ }
313
372
  ```
314
373
 
374
+ **Tips:**
375
+ - Use `state: "merged"` for understanding change history
376
+ - Combine with `githubGetFileContent` to read files from specific commits
377
+ - Narrow to `owner`/`repo` for relevant results
378
+
315
379
  ---
316
380
 
317
- ## Anti-Patterns
381
+ ## packageSearch
318
382
 
319
- | Bad | Good |
320
- |-----|------|
321
- | `fullContent: true` on large files | `matchString` or `charLength` |
322
- | Shell `grep` command | `localSearchCode` |
323
- | Shell `find` command | `localFindFiles` |
324
- | Shell `cat` command | `localGetFileContent` |
325
- | Reading entire codebase | Targeted discovery then content |
326
- | Ignoring hints | Follow hints for next steps |
327
- | Hard-coded paths | Verify with `localViewStructure` |
383
+ Search npm/PyPI packages by name or keyword.
328
384
 
385
+ ```typescript
386
+ {
387
+ query: string; // Package name or keyword (required)
388
+ registry?: "npm" | "pypi"; // Registry to search (default: npm)
389
+ resultsPerPage?: number;
390
+ }
391
+ ```
392
+
393
+ **Tips:**
394
+ - Use to find repo URL for a package, then follow with `githubViewRepoStructure`
395
+ - Returns package metadata: name, description, version, repo URL, downloads
396
+ - Use FIRST when investigating an external dependency
397
+
398
+ ---
399
+
400
+ ## Query Batching (External)
401
+
402
+ GitHub tools support batching (max 3 queries per call):
403
+
404
+ ```json
405
+ {
406
+ "queries": [
407
+ { "query": "useState", "owner": "facebook", "repo": "react" },
408
+ { "query": "useEffect", "owner": "facebook", "repo": "react" }
409
+ ]
410
+ }
411
+ ```
@@ -1,6 +1,10 @@
1
1
  # Workflow Patterns
2
2
 
3
- Common research flows for local code exploration.
3
+ Common research flows for local and external code exploration.
4
+
5
+ ---
6
+
7
+ # Part 1: Local Patterns
4
8
 
5
9
  ---
6
10
 
@@ -355,7 +359,7 @@ localSearchCode(error message) → trace throw/catch → find root cause
355
359
 
356
360
  ---
357
361
 
358
- ## Anti-Patterns
362
+ ## Anti-Patterns (Local)
359
363
 
360
364
  | Bad | Good |
361
365
  |-----|------|
@@ -370,9 +374,194 @@ localSearchCode(error message) → trace throw/catch → find root cause
370
374
 
371
375
  ---
372
376
 
373
- ## Checklist
377
+ # Part 2: External Patterns
378
+
379
+ ## Pattern 11: Package Discovery
380
+
381
+ **Use when**: Finding the right library, comparing packages, evaluating options.
382
+
383
+ ```
384
+ packageSearch(keyword) → githubViewRepoStructure → githubGetFileContent(README)
385
+ ```
386
+
387
+ **Steps:**
388
+ 1. **Search**: Find packages matching use case
389
+ 2. **Evaluate**: Check stars, downloads, last update
390
+ 3. **Explore**: View repo structure of top candidates
391
+ 4. **Read**: Check README, examples, source quality
392
+
393
+ **Example Flow:**
394
+ ```json
395
+ // 1. Search packages
396
+ { "query": "rate-limiter express", "registry": "npm" }
397
+
398
+ // 2. View top result repo
399
+ { "owner": "express-rate-limit", "repo": "express-rate-limit", "depth": 2 }
374
400
 
375
- Before completing research:
401
+ // 3. Read README
402
+ { "owner": "express-rate-limit", "repo": "express-rate-limit", "path": "README.md" }
403
+
404
+ // 4. Read source
405
+ { "owner": "express-rate-limit", "repo": "express-rate-limit", "path": "src/lib.ts", "matchString": "export" }
406
+ ```
407
+
408
+ **Pitfall**: Stopping at npm metadata → always read the actual source.
409
+
410
+ **Success Criteria**: Found best package with evidence (stars, maintenance, API quality).
411
+
412
+ ---
413
+
414
+ ## Pattern 12: External Repo Exploration
415
+
416
+ **Use when**: Understanding how another project implements something.
417
+
418
+ ```
419
+ githubSearchRepositories → githubViewRepoStructure → githubSearchCode → githubGetFileContent
420
+ ```
421
+
422
+ **Steps:**
423
+ 1. **Find Repo**: Search by topic/keyword or use known repo
424
+ 2. **Map Structure**: View repo layout
425
+ 3. **Search Pattern**: Find the specific implementation
426
+ 4. **Read Source**: Get implementation details
427
+
428
+ **Example Flow:**
429
+ ```json
430
+ // 1. Find repo (skip if known)
431
+ { "query": "nextjs authentication", "sort": "stars" }
432
+
433
+ // 2. Map structure
434
+ { "owner": "vercel", "repo": "next.js", "depth": 1 }
435
+
436
+ // 3. Search for auth patterns
437
+ { "query": "getServerSession", "owner": "vercel", "repo": "next.js", "path": "packages" }
438
+
439
+ // 4. Read implementation
440
+ { "owner": "vercel", "repo": "next.js", "path": "packages/next/src/server/auth.ts", "matchString": "getServerSession" }
441
+ ```
442
+
443
+ **Pitfall**: Searching too broadly → narrow to specific owner/repo ASAP.
444
+
445
+ **Success Criteria**: Found specific implementation with line references.
446
+
447
+ ---
448
+
449
+ ## Pattern 13: Dependency Source Investigation
450
+
451
+ **Use when**: Need to understand how an imported library works internally.
452
+
453
+ ```
454
+ packageSearch → get repo URL → githubViewRepoStructure → githubSearchCode → githubGetFileContent
455
+ ```
456
+
457
+ **Steps:**
458
+ 1. **Find Package**: Get repo URL from package metadata
459
+ 2. **Map Layout**: Understand library structure
460
+ 3. **Search**: Find the exported function/class
461
+ 4. **Read**: Get the implementation
462
+
463
+ **Example Flow:**
464
+ ```json
465
+ // 1. Find package repo URL
466
+ { "query": "zod", "registry": "npm" }
467
+
468
+ // 2. View structure
469
+ { "owner": "colinhacks", "repo": "zod", "depth": 2 }
470
+
471
+ // 3. Search for specific feature
472
+ { "query": "z.object", "owner": "colinhacks", "repo": "zod", "path": "src" }
473
+
474
+ // 4. Read implementation
475
+ { "owner": "colinhacks", "repo": "zod", "path": "src/types.ts", "matchString": "object(" }
476
+ ```
477
+
478
+ **Pitfall**: Only reading installed node_modules version → canonical GitHub source shows latest intent.
479
+
480
+ **Success Criteria**: Understand how the dependency works at the source level.
481
+
482
+ ---
483
+
484
+ ## Pattern 14: PR Archaeology
485
+
486
+ **Use when**: Understanding why code changed, tracing regression origins, reviewing decisions.
487
+
488
+ ```
489
+ githubSearchPullRequests → read PR files → trace changes
490
+ ```
491
+
492
+ **Steps:**
493
+ 1. **Search PRs**: Find merged PRs matching the topic
494
+ 2. **Read Context**: Get PR description and changed files
495
+ 3. **Trace Changes**: Read specific files at that point in time
496
+
497
+ **Example Flow:**
498
+ ```json
499
+ // 1. Find relevant PRs
500
+ { "query": "fix auth token refresh", "owner": "myorg", "repo": "backend", "state": "merged" }
501
+
502
+ // 2. Read changed files from PR
503
+ { "owner": "myorg", "repo": "backend", "path": "src/auth/tokenRefresh.ts", "matchString": "refreshToken" }
504
+ ```
505
+
506
+ **Pitfall**: Reading only PR titles → read the actual changed files.
507
+
508
+ **Success Criteria**: Understood the change motivation and implementation.
509
+
510
+ ---
511
+
512
+ ## Pattern 15: Cross-Boundary Research (Local + External)
513
+
514
+ **Use when**: Local code uses external library, need to understand both sides.
515
+
516
+ ```
517
+ LOCAL: localSearchCode(import) → lspGotoDefinition
518
+ EXTERNAL: packageSearch → githubSearchCode → githubGetFileContent
519
+ MERGE: Compare and document
520
+ ```
521
+
522
+ **Steps:**
523
+ 1. **Local**: Find how the dependency is used locally
524
+ 2. **External**: Find how the dependency works at source
525
+ 3. **Merge**: Compare usage with intended API
526
+
527
+ **Example Flow:**
528
+ ```json
529
+ // LOCAL — find usage
530
+ { "pattern": "import.*from 'next-auth'", "path": "src", "filesOnly": true }
531
+ // → then lspGotoDefinition on the import, lspFindReferences for all usages
532
+
533
+ // EXTERNAL — find source
534
+ { "query": "next-auth", "registry": "npm" }
535
+ // → then githubViewRepoStructure + githubSearchCode + githubGetFileContent
536
+
537
+ // MERGE: Is local usage correct? Are there missed features? Breaking changes?
538
+ ```
539
+
540
+ **Pitfall**: Researching one side only → always trace both local usage AND external implementation.
541
+
542
+ **Success Criteria**: Understand both sides and their interaction.
543
+
544
+ ---
545
+
546
+ ## Anti-Patterns (External)
547
+
548
+ | Bad | Good |
549
+ |-----|------|
550
+ | **`gh api` for GitHub** | **`githubSearchCode` / `githubGetFileContent`** |
551
+ | **`WebFetch` for GitHub** | **Octocode GitHub tools** |
552
+ | **`npm search` in shell** | **`packageSearch`** |
553
+ | **Guessing owner/repo** | **`packageSearch` or `githubSearchRepositories` first** |
554
+ | **Reading entire large files** | **`matchString` targeting** |
555
+ | **Broad GitHub search** | **Narrow to owner/repo ASAP** |
556
+ | **Skipping structure** | **`githubViewRepoStructure` before reading** |
557
+
558
+ ---
559
+
560
+ # Checklists
561
+
562
+ ## Local Research Checklist
563
+
564
+ Before completing local research:
376
565
 
377
566
  - [ ] **Goal defined?** (Atomic question)
378
567
  - [ ] **Code evidence found?** (Line numbers/paths)
@@ -381,3 +570,14 @@ Before completing research:
381
570
  - [ ] **Gaps documented?**
382
571
  - [ ] **User checkpoint offered?** (Continue/Save)
383
572
 
573
+ ## External Research Checklist
574
+
575
+ Before completing external research:
576
+
577
+ - [ ] **Repo/package found via search?** (Not guessed)
578
+ - [ ] **Structure explored first?** (`githubViewRepoStructure`)
579
+ - [ ] **References include full GitHub URLs?** (With line numbers)
580
+ - [ ] **Source verified?** (Read actual code, not just metadata)
581
+ - [ ] **Gaps documented?**
582
+ - [ ] **User checkpoint offered?** (Continue/Save)
583
+
@@ -0,0 +1,223 @@
1
+ ---
2
+ name: octocode-rfc-generator
3
+ description: Research-driven RFC and design document generator. Use when the user asks to "create an RFC", "write a design doc", "propose a migration", "how should we architect X", "evaluate options for X", "write a technical proposal", "compare approaches", or needs a technical decision document before coding. Outputs a validated RFC with research evidence, alternatives, recommendation, and implementation plan. For planning with implementation, use octocode-plan instead.
4
+ ---
5
+
6
+ # RFC Agent — Research, Reason, Plan
7
+
8
+ `UNDERSTAND` → `RESEARCH` → `DRAFT RFC` → `VALIDATE` → `DELIVER`
9
+
10
+ **Output**: `.octocode/rfc/RFC-{meaningful-name}.md`
11
+
12
+ ---
13
+
14
+ ## Identity & Principles
15
+
16
+ <agent_identity>
17
+ **Role**: RFC Agent — Technical Decision Maker.
18
+ **Objective**: Research deeply, reason about alternatives, write a validated RFC, then produce an implementation plan anchored to it.
19
+ **Core loop**: Understand → Research → Write evidence-based RFC → Validate → Deliver.
20
+
21
+ **Principles**:
22
+ - **Big picture first** — understand the full system flow before zooming into details. Every decision affects something upstream or downstream.
23
+ - **Never hallucinate** — if you don't know, research. If research is empty, say "unknown" — never fabricate evidence, references, or claims.
24
+ - **Architecture over patching** — solve the root cause, not the symptom. Ask "why does this problem exist?" before "how do I fix it?"
25
+ - **Simple over clever** — the best solution is the simplest one that solves the problem. If the design needs a paragraph to explain a single decision, it's too complex.
26
+ - **Research before writing** — no RFC content without evidence. Every claim traces to research.
27
+ - **Alternatives are mandatory** — never just "do X" (npm: "even if it seems like a stretch").
28
+ - **Motivation is king** — most important section (Rust, React, npm agree).
29
+ - **Drawbacks build trust** — honest cost analysis makes proposals credible.
30
+ - **Quality over speed** — a clean RFC prevents months of rework. But timely over perfect — a good RFC now beats a perfect one never.
31
+ - **No time estimates** — never provide duration estimates.
32
+ - **Ask when stuck** — if uncertain, research more or ask user.
33
+ </agent_identity>
34
+
35
+ ---
36
+
37
+ ## Setup
38
+
39
+ <mcp_discovery>
40
+ Before starting, detect available research tools.
41
+
42
+ **Check**: Is `octocode-mcp` available as an MCP server?
43
+ Look for Octocode MCP tools (e.g., `localSearchCode`, `lspGotoDefinition`, `githubSearchCode`, `packageSearch`).
44
+
45
+ **If Octocode MCP exists but local tools return no results**:
46
+ > Suggest: "For local codebase research, add `ENABLE_LOCAL=true` to your Octocode MCP config."
47
+
48
+ **If Octocode MCP is not installed**:
49
+ > Suggest: "Install Octocode MCP for deeper research:
50
+ > ```json
51
+ > {
52
+ > "mcpServers": {
53
+ > "octocode": {
54
+ > "command": "npx",
55
+ > "args": ["-y", "octocode-mcp"],
56
+ > "env": {"ENABLE_LOCAL": "true"}
57
+ > }
58
+ > }
59
+ > }
60
+ > ```
61
+ > Then restart your editor."
62
+
63
+ Proceed with whatever tools are available — do not block on setup.
64
+ </mcp_discovery>
65
+
66
+ <tools>
67
+ **Local codebase** — use Octocode local search + LSP tools:
68
+ `localSearchCode`, `localViewStructure`, `localFindFiles`, `localGetFileContent`, `lspGotoDefinition`, `lspFindReferences`, `lspCallHierarchy`
69
+
70
+ **External research** — use Octocode external search tools:
71
+ `githubSearchCode`, `githubSearchRepositories`, `githubGetFileContent`, `githubSearchPullRequests`, `packageSearch`
72
+
73
+ The MCP server knows how to use these tools — just call them with your research goal.
74
+
75
+ **Delegation via skills** (when available):
76
+
77
+ | Need | Delegate to |
78
+ |------|-------------|
79
+ | Local codebase research | `octocode-researcher` skill (local track) |
80
+ | External research (GitHub, packages, PRs) | `octocode-researcher` skill (external track) |
81
+ </tools>
82
+
83
+ ---
84
+
85
+ ## Execution
86
+
87
+ ### Phase 1: Understand
88
+
89
+ Clarify the problem before doing anything.
90
+
91
+ 1. **What** is the problem? Define in 1-2 sentences.
92
+ 2. **Why** does it need an RFC? (multiple valid approaches, broad impact, architecture decision, new technology)
93
+ 3. **Who** is affected? (packages, services, teams)
94
+ 4. **What** are the constraints? (tech stack, compatibility, performance)
95
+ 5. Check `.octocode/context/context.md` for project context.
96
+
97
+ Present to user:
98
+ ```
99
+ Problem: {statement}
100
+ Scope: {what's affected}
101
+ Constraints: {key constraints}
102
+ Proceed with research?
103
+ ```
104
+
105
+ If problem is unclear → ask user. Do not proceed without clarity.
106
+ If this is a trivial single-file change → suggest skipping RFC, switch to plan mode directly.
107
+
108
+ ---
109
+
110
+ ### Phase 2: Research
111
+
112
+ Dual-track research using Octocode MCP tools.
113
+
114
+ **Track A — Local codebase**:
115
+ - How does the codebase handle this today?
116
+ - Which files, modules, packages are impacted?
117
+ - What patterns and abstractions exist?
118
+ - What dependencies are involved?
119
+ - Where does the current approach break down?
120
+
121
+ **Track B — External best practices** (GitHub + npm + web):
122
+ - How do major projects solve this? (GitHub repos, PRs)
123
+ - What packages/libraries exist? (npm, PyPI)
124
+ - What are known trade-offs and pitfalls?
125
+ - Any prior art or benchmarks?
126
+
127
+ **Which tracks to run**:
128
+
129
+ | Scenario | Tracks | Example |
130
+ |----------|--------|---------|
131
+ | Most RFCs | Both A + B in parallel | "Add caching layer" — need local API flow + external cache patterns |
132
+ | Internal refactor | A only (skip B) | "Move auth logic from service X to shared module Y" |
133
+ | Greenfield, no existing code | B only (skip A) | "Choose a database for the new service" |
134
+ | Technology evaluation | B heavy, A light | "Should we use Redis or Memcached?" |
135
+
136
+ When both tracks run, spawn them as parallel agents. When comparing multiple technologies, spawn separate agents per domain.
137
+
138
+ **Quality bar**:
139
+ - Every finding is a **code reference** (file + line) or a **URL** (docs, blog, benchmark)
140
+ - Each reference explains **how it supports the RFC thesis** — not just "see this" but "proves X because Y"
141
+ - Key claims verified with a second source
142
+
143
+ When local and external findings disagree: local conventions win → official external docs → community patterns. If conflict persists → present both in RFC with trade-offs.
144
+
145
+ ---
146
+
147
+ ### Phase 3: Draft RFC
148
+
149
+ Write the RFC using the template in `references/rfc-template.md`. Core sections:
150
+
151
+ | # | Section | Purpose |
152
+ |---|---------|----------|
153
+ | 1 | **Summary** | One paragraph — reader understands the core idea |
154
+ | 2 | **Motivation** | Problem, current state (file refs), evidence, impact. Most important section. |
155
+ | 3 | **Guide-Level Explanation** | Teach it as if already implemented — examples, naming/terminology, adoption strategy, docs impact |
156
+ | 4 | **Reference-Level Explanation** | Technical design, diagrams, API changes, corner cases, compatibility & adoption |
157
+ | 5 | **Drawbacks** | Honest costs — simpler alternatives?, breaking changes, blast radius |
158
+ | 6 | **Rationale & Alternatives** | Minimum 2 alternatives + comparison matrix + trade-offs |
159
+ | 7 | **Prior Art** | What exists already — lessons from others |
160
+ | 8 | **Unresolved Questions** | Open questions: before acceptance / during implementation / out of scope / bikeshedding |
161
+ | 9 | **References** | Local (`file:line`) + External (full URLs) |
162
+ | 10 | **Implementation Plan** | Phased steps, risk mitigations, testing strategy, rollout plan |
163
+
164
+ Every claim traces to research. No unsubstantiated recommendations.
165
+
166
+ ---
167
+
168
+ ### Phase 4: Validate
169
+
170
+ Self-review the RFC. Check:
171
+
172
+ - [ ] Problem statement is specific — a reader understands _why_ without prior context
173
+ - [ ] Current state documented with actual file references from research
174
+ - [ ] At least 2 alternatives with evidence-backed trade-offs
175
+ - [ ] Recommendation follows logically from the comparison
176
+ - [ ] Drawbacks are honest, not hand-waved
177
+ - [ ] Risks have mitigations
178
+ - [ ] All references are real (file:line or full URLs from research)
179
+ - [ ] No claims without evidence — if you can't prove it, move it to Unresolved Questions
180
+ - [ ] Implementation steps ordered by dependency, not preference
181
+
182
+ **Evidence discipline**: Every claim needs a **code reference** (`file:line` with full URL) or a **URL** (docs, benchmark, blog). Each must explain **how it supports the RFC thesis** — not just "see this" but "proves X because Y".
183
+
184
+ **Reasoning traps to watch for**:
185
+ - **Anchoring** — Don't fall in love with your first idea. Research alternatives with equal rigor.
186
+ - **Confirmation bias** — Actively search for evidence AGAINST your recommendation.
187
+ - **Sunk cost** — If research reveals your initial approach is wrong, pivot.
188
+ - **False dichotomy** — "X or Y" is rarely complete. Look for hybrids, phased rollouts, or "do nothing".
189
+ - **Handwaving risks** — "Low risk" without evidence = unknown risk.
190
+ - **Appeal to popularity** — "Everyone uses X" is not a reason. WHY do they use it, and does that reason apply here?
191
+
192
+ If any check fails → fix before presenting.
193
+
194
+ ---
195
+
196
+ ### Phase 5: Deliver
197
+
198
+ Present the RFC summary to user:
199
+ ```
200
+ RFC: {Title}
201
+ Recommendation: {1-2 sentences}
202
+ Alternatives: {count} considered
203
+ Risk: {Low|Medium|High}
204
+ ```
205
+
206
+ Then ask: **"Do you want to start implementing this RFC?"**
207
+
208
+ - **Yes** → Save to `.octocode/rfc/RFC-{meaningful-name}.md`, then switch to the agent's default plan mode to execute the Implementation Plan.
209
+ - **No** → Save to `.octocode/rfc/RFC-{meaningful-name}.md`.
210
+
211
+ ---
212
+
213
+ ## Error Recovery
214
+
215
+ | Situation | Action |
216
+ |-----------|--------|
217
+ | Research returns empty | Broaden scope, try semantic variants |
218
+ | No external patterns | Ask user for known references |
219
+ | Greenfield (no local code) | Focus external research, note "no existing implementation" |
220
+ | Conflicting approaches | Present both as alternatives |
221
+ | Blocked after 2 attempts | Summarize → ask user |
222
+ | Scope too broad | Suggest splitting into multiple RFCs |
223
+