@cregis-dev/cckit 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/README.md +15 -3
  2. package/package.json +1 -1
  3. package/registry.json +234 -200
  4. package/src/commands/init.js +19 -15
  5. package/src/commands/update.js +9 -4
  6. package/src/core/plugin-installer.js +59 -13
  7. package/src/utils/fs.js +6 -1
  8. package/templates/bmad/_config/bmad-help.csv +2 -1
  9. package/templates/bmad/_config/files-manifest.csv +437 -431
  10. package/templates/bmad/_config/ides/claude-code.yaml +5 -5
  11. package/templates/bmad/_config/ides/trae.yaml +5 -5
  12. package/templates/bmad/_config/task-manifest.csv +7 -6
  13. package/templates/bmad/_config/workflow-manifest.csv +34 -34
  14. package/templates/bmad/bmm/agents/qa.md +1 -1
  15. package/templates/bmad/bmm/config.yaml +1 -1
  16. package/templates/bmad/bmm/module-help.csv +1 -1
  17. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +1 -1
  18. package/templates/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +1 -1
  19. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-domain-research.md +1 -1
  20. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-market-research.md +1 -1
  21. package/templates/bmad/bmm/workflows/1-analysis/research/workflow-technical-research.md +1 -1
  22. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +1 -1
  23. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +1 -1
  24. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +1 -1
  25. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +1 -1
  26. package/templates/bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +1 -1
  27. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +1 -1
  28. package/templates/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +1 -1
  29. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +1 -1
  30. package/templates/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +1 -1
  31. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +1 -1
  32. package/templates/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +1 -1
  33. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +1 -1
  34. package/templates/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +1 -1
  35. package/templates/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +1 -1
  36. package/templates/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +1 -1
  37. package/templates/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +1 -1
  38. package/templates/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +1 -1
  39. package/templates/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +1 -1
  40. package/templates/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +1 -1
  41. package/templates/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +1 -1
  42. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +1 -1
  43. package/templates/bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +1 -1
  44. package/templates/bmad/bmm/workflows/document-project/workflow.yaml +1 -1
  45. package/templates/bmad/bmm/workflows/generate-project-context/workflow.md +1 -1
  46. package/templates/bmad/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +2 -2
  47. package/templates/bmad/commands/bmad-bmm-check-implementation-readiness.md +2 -2
  48. package/templates/bmad/commands/bmad-bmm-code-review.md +4 -4
  49. package/templates/bmad/commands/bmad-bmm-correct-course.md +4 -4
  50. package/templates/bmad/commands/bmad-bmm-create-architecture.md +2 -2
  51. package/templates/bmad/commands/bmad-bmm-create-epics-and-stories.md +2 -2
  52. package/templates/bmad/commands/bmad-bmm-create-prd.md +2 -2
  53. package/templates/bmad/commands/bmad-bmm-create-product-brief.md +2 -2
  54. package/templates/bmad/commands/bmad-bmm-create-story.md +4 -4
  55. package/templates/bmad/commands/bmad-bmm-create-ux-design.md +2 -2
  56. package/templates/bmad/commands/bmad-bmm-dev-story.md +4 -4
  57. package/templates/bmad/commands/bmad-bmm-document-project.md +4 -4
  58. package/templates/bmad/commands/bmad-bmm-domain-research.md +2 -2
  59. package/templates/bmad/commands/bmad-bmm-edit-prd.md +2 -2
  60. package/templates/bmad/commands/bmad-bmm-generate-project-context.md +2 -2
  61. package/templates/bmad/commands/bmad-bmm-market-research.md +2 -2
  62. package/templates/bmad/commands/bmad-bmm-qa-generate-e2e-tests.md +4 -4
  63. package/templates/bmad/commands/bmad-bmm-quick-dev.md +2 -2
  64. package/templates/bmad/commands/bmad-bmm-quick-spec.md +2 -2
  65. package/templates/bmad/commands/bmad-bmm-retrospective.md +4 -4
  66. package/templates/bmad/commands/bmad-bmm-sprint-planning.md +4 -4
  67. package/templates/bmad/commands/bmad-bmm-sprint-status.md +4 -4
  68. package/templates/bmad/commands/bmad-bmm-technical-research.md +2 -2
  69. package/templates/bmad/commands/bmad-bmm-validate-prd.md +2 -2
  70. package/templates/bmad/commands/bmad-brainstorming.md +2 -2
  71. package/templates/bmad/commands/bmad-editorial-review-prose.md +1 -1
  72. package/templates/bmad/commands/bmad-editorial-review-structure.md +1 -1
  73. package/templates/bmad/commands/bmad-help.md +1 -1
  74. package/templates/bmad/commands/bmad-index-docs.md +1 -1
  75. package/templates/bmad/commands/bmad-party-mode.md +2 -2
  76. package/templates/bmad/commands/bmad-review-adversarial-general.md +1 -1
  77. package/templates/bmad/commands/bmad-review-edge-case-hunter.md +10 -0
  78. package/templates/bmad/commands/bmad-shard-doc.md +1 -1
  79. package/templates/bmad/commands/bmad-tea-teach-me-testing.md +2 -2
  80. package/templates/bmad/commands/bmad-tea-testarch-atdd.md +4 -4
  81. package/templates/bmad/commands/bmad-tea-testarch-automate.md +4 -4
  82. package/templates/bmad/commands/bmad-tea-testarch-ci.md +4 -4
  83. package/templates/bmad/commands/bmad-tea-testarch-framework.md +4 -4
  84. package/templates/bmad/commands/bmad-tea-testarch-nfr.md +4 -4
  85. package/templates/bmad/commands/bmad-tea-testarch-test-design.md +4 -4
  86. package/templates/bmad/commands/bmad-tea-testarch-test-review.md +4 -4
  87. package/templates/bmad/commands/bmad-tea-testarch-trace.md +4 -4
  88. package/templates/bmad/core/config.yaml +1 -1
  89. package/templates/bmad/core/module-help.csv +1 -0
  90. package/templates/bmad/core/tasks/editorial-review-prose.xml +1 -1
  91. package/templates/bmad/core/tasks/editorial-review-structure.xml +1 -1
  92. package/templates/bmad/core/tasks/help.md +1 -1
  93. package/templates/bmad/core/tasks/index-docs.xml +1 -1
  94. package/templates/bmad/core/tasks/review-adversarial-general.xml +1 -1
  95. package/templates/bmad/core/tasks/review-edge-case-hunter.xml +63 -0
  96. package/templates/bmad/core/tasks/shard-doc.xml +1 -1
  97. package/templates/bmad/core/workflows/advanced-elicitation/workflow.xml +1 -1
  98. package/templates/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +31 -18
  99. package/templates/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +1 -1
  100. package/templates/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +2 -2
  101. package/templates/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +2 -2
  102. package/templates/bmad/core/workflows/brainstorming/workflow.md +4 -2
  103. package/templates/bmad/core/workflows/party-mode/workflow.md +1 -1
  104. package/templates/bmad/tea/config.yaml +5 -1
  105. package/templates/bmad/tea/testarch/knowledge/contract-testing.md +24 -2
  106. package/templates/bmad/tea/testarch/knowledge/pact-mcp.md +204 -0
  107. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-consumer-helpers.md +211 -0
  108. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-overview.md +210 -0
  109. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-provider-verifier.md +315 -0
  110. package/templates/bmad/tea/testarch/knowledge/pactjs-utils-request-filter.md +224 -0
  111. package/templates/bmad/tea/testarch/tea-index.csv +5 -0
  112. package/templates/bmad/tea/workflows/testarch/README.md +1 -1
  113. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +30 -0
  114. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +159 -57
  115. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04a-subagent-api-failing.md +215 -0
  116. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04b-subagent-e2e-failing.md +244 -0
  117. package/templates/bmad/tea/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +31 -15
  118. package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-095021.md +1 -1
  119. package/templates/bmad/tea/workflows/testarch/atdd/validation-report-20260127-102401.md +3 -3
  120. package/templates/bmad/tea/workflows/testarch/atdd/workflow.yaml +2 -2
  121. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +32 -0
  122. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03-generate-tests.md +215 -101
  123. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03a-subagent-api.md +193 -0
  124. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subagent-backend.md +246 -0
  125. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03b-subagent-e2e.md +213 -0
  126. package/templates/bmad/tea/workflows/testarch/automate/steps-c/step-03c-aggregate.md +38 -22
  127. package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-095021.md +1 -1
  128. package/templates/bmad/tea/workflows/testarch/automate/validation-report-20260127-102401.md +3 -3
  129. package/templates/bmad/tea/workflows/testarch/automate/workflow.yaml +2 -2
  130. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +124 -1
  131. package/templates/bmad/tea/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +7 -0
  132. package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-095021.md +1 -1
  133. package/templates/bmad/tea/workflows/testarch/ci/validation-report-20260127-102401.md +3 -3
  134. package/templates/bmad/tea/workflows/testarch/ci/workflow.yaml +2 -2
  135. package/templates/bmad/tea/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +126 -3
  136. package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-095021.md +1 -1
  137. package/templates/bmad/tea/workflows/testarch/framework/validation-report-20260127-102401.md +3 -3
  138. package/templates/bmad/tea/workflows/testarch/framework/workflow.yaml +2 -2
  139. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +150 -36
  140. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04a-subagent-security.md +138 -0
  141. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04b-subagent-performance.md +84 -0
  142. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04c-subagent-reliability.md +85 -0
  143. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04d-subagent-scalability.md +88 -0
  144. package/templates/bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +27 -10
  145. package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +1 -1
  146. package/templates/bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +3 -3
  147. package/templates/bmad/tea/workflows/testarch/nfr-assess/workflow.yaml +2 -2
  148. package/templates/bmad/tea/workflows/testarch/teach-me-testing/data/tea-resources-index.yaml +3 -3
  149. package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +6 -6
  150. package/templates/bmad/tea/workflows/testarch/teach-me-testing/workflow.md +1 -1
  151. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-02-load-context.md +30 -0
  152. package/templates/bmad/tea/workflows/testarch/test-design/steps-c/step-05-generate-output.md +72 -1
  153. package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-095021.md +1 -1
  154. package/templates/bmad/tea/workflows/testarch/test-design/validation-report-20260127-102401.md +3 -3
  155. package/templates/bmad/tea/workflows/testarch/test-design/workflow.yaml +2 -2
  156. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-01-load-context.md +29 -1
  157. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +147 -46
  158. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03a-subagent-determinism.md +214 -0
  159. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03b-subagent-isolation.md +125 -0
  160. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03c-subagent-maintainability.md +102 -0
  161. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03e-subagent-performance.md +117 -0
  162. package/templates/bmad/tea/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +10 -10
  163. package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-095021.md +1 -1
  164. package/templates/bmad/tea/workflows/testarch/test-review/validation-report-20260127-102401.md +3 -3
  165. package/templates/bmad/tea/workflows/testarch/test-review/workflow.yaml +2 -2
  166. package/templates/bmad/tea/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +92 -1
  167. package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-095021.md +1 -1
  168. package/templates/bmad/tea/workflows/testarch/trace/validation-report-20260127-102401.md +3 -3
  169. package/templates/bmad/tea/workflows/testarch/trace/workflow.yaml +2 -2
  170. package/templates/ecc/agents/chief-of-staff.md +151 -0
  171. package/templates/ecc/commands/claw.md +79 -0
  172. package/templates/ecc/rules/README.md +23 -2
  173. package/templates/ecc/rules/common/development-workflow.md +37 -0
  174. package/templates/ecc/rules/common/git-workflow.md +2 -23
  175. package/templates/ecc/rules/swift/coding-style.md +47 -0
  176. package/templates/ecc/rules/swift/hooks.md +20 -0
  177. package/templates/ecc/rules/swift/patterns.md +66 -0
  178. package/templates/ecc/rules/swift/security.md +33 -0
  179. package/templates/ecc/rules/swift/testing.md +45 -0
  180. package/templates/ecc/skills/api-design/SKILL.md +1 -0
  181. package/templates/ecc/skills/article-writing/SKILL.md +85 -0
  182. package/templates/ecc/skills/backend-patterns/SKILL.md +1 -0
  183. package/templates/ecc/skills/clickhouse-io/SKILL.md +1 -0
  184. package/templates/ecc/skills/coding-standards/SKILL.md +1 -0
  185. package/templates/ecc/skills/configure-ecc/SKILL.md +32 -4
  186. package/templates/ecc/skills/content-engine/SKILL.md +88 -0
  187. package/templates/ecc/skills/content-hash-cache-pattern/SKILL.md +1 -0
  188. package/templates/ecc/skills/continuous-learning/SKILL.md +2 -1
  189. package/templates/ecc/skills/continuous-learning-v2/SKILL.md +4 -1
  190. package/templates/ecc/skills/continuous-learning-v2/hooks/observe.sh +14 -7
  191. package/templates/ecc/skills/cost-aware-llm-pipeline/SKILL.md +1 -0
  192. package/templates/ecc/skills/cpp-coding-standards/SKILL.md +1 -0
  193. package/templates/ecc/skills/cpp-testing/SKILL.md +1 -0
  194. package/templates/ecc/skills/database-migrations/SKILL.md +1 -0
  195. package/templates/ecc/skills/deployment-patterns/SKILL.md +1 -0
  196. package/templates/ecc/skills/django-patterns/SKILL.md +1 -0
  197. package/templates/ecc/skills/django-security/SKILL.md +1 -0
  198. package/templates/ecc/skills/django-tdd/SKILL.md +1 -0
  199. package/templates/ecc/skills/django-verification/SKILL.md +1 -0
  200. package/templates/ecc/skills/docker-patterns/SKILL.md +1 -0
  201. package/templates/ecc/skills/e2e-testing/SKILL.md +1 -0
  202. package/templates/ecc/skills/eval-harness/SKILL.md +1 -0
  203. package/templates/ecc/skills/foundation-models-on-device/SKILL.md +243 -0
  204. package/templates/ecc/skills/frontend-patterns/SKILL.md +1 -0
  205. package/templates/ecc/skills/frontend-slides/SKILL.md +184 -0
  206. package/templates/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  207. package/templates/ecc/skills/golang-patterns/SKILL.md +1 -0
  208. package/templates/ecc/skills/golang-testing/SKILL.md +1 -0
  209. package/templates/ecc/skills/investor-materials/SKILL.md +96 -0
  210. package/templates/ecc/skills/investor-outreach/SKILL.md +76 -0
  211. package/templates/ecc/skills/iterative-retrieval/SKILL.md +1 -0
  212. package/templates/ecc/skills/java-coding-standards/SKILL.md +1 -0
  213. package/templates/ecc/skills/jpa-patterns/SKILL.md +1 -0
  214. package/templates/ecc/skills/liquid-glass-design/SKILL.md +279 -0
  215. package/templates/ecc/skills/market-research/SKILL.md +75 -0
  216. package/templates/ecc/skills/nutrient-document-processing/SKILL.md +1 -1
  217. package/templates/ecc/skills/postgres-patterns/SKILL.md +1 -0
  218. package/templates/ecc/skills/project-guidelines-example/SKILL.md +1 -0
  219. package/templates/ecc/skills/python-patterns/SKILL.md +1 -0
  220. package/templates/ecc/skills/python-testing/SKILL.md +1 -0
  221. package/templates/ecc/skills/regex-vs-llm-structured-text/SKILL.md +1 -0
  222. package/templates/ecc/skills/search-first/SKILL.md +3 -1
  223. package/templates/ecc/skills/security-review/SKILL.md +1 -0
  224. package/templates/ecc/skills/security-scan/SKILL.md +1 -0
  225. package/templates/ecc/skills/skill-stocktake/SKILL.md +176 -0
  226. package/templates/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  227. package/templates/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -0
  228. package/templates/ecc/skills/skill-stocktake/scripts/scan.sh +170 -0
  229. package/templates/ecc/skills/springboot-patterns/SKILL.md +1 -0
  230. package/templates/ecc/skills/springboot-security/SKILL.md +1 -0
  231. package/templates/ecc/skills/springboot-tdd/SKILL.md +1 -0
  232. package/templates/ecc/skills/springboot-verification/SKILL.md +1 -0
  233. package/templates/ecc/skills/strategic-compact/SKILL.md +1 -0
  234. package/templates/ecc/skills/swift-actor-persistence/SKILL.md +1 -0
  235. package/templates/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -0
  236. package/templates/ecc/skills/swift-protocol-di-testing/SKILL.md +1 -0
  237. package/templates/ecc/skills/swiftui-patterns/SKILL.md +259 -0
  238. package/templates/ecc/skills/tdd-workflow/SKILL.md +1 -0
  239. package/templates/ecc/skills/verification-loop/SKILL.md +1 -0
  240. package/templates/ecc/skills/visa-doc-translate/README.md +86 -0
  241. package/templates/ecc/skills/visa-doc-translate/SKILL.md +117 -0
  242. package/templates/ext-skills/pinchtab/SKILL.md +89 -486
  243. package/templates/ext-skills/pinchtab/TRUST.md +69 -0
  244. package/templates/ext-skills/pinchtab/references/api.md +297 -0
  245. package/templates/ext-skills/pinchtab/references/env.md +45 -0
  246. package/templates/ext-skills/pinchtab/references/profiles.md +107 -0
  247. package/templates/plugins/claude-code-setup/.claude-plugin/plugin.json +9 -0
  248. package/templates/plugins/claude-code-setup/LICENSE +202 -0
  249. package/templates/plugins/claude-code-setup/README.md +29 -0
  250. package/templates/plugins/claude-code-setup/automation-recommender-example.png +0 -0
  251. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/SKILL.md +288 -0
  252. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/hooks-patterns.md +226 -0
  253. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/mcp-servers.md +263 -0
  254. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/plugins-reference.md +98 -0
  255. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/skills-reference.md +408 -0
  256. package/templates/plugins/claude-code-setup/skills/claude-automation-recommender/references/subagent-templates.md +181 -0
  257. package/templates/plugins/claude-md-management/.claude-plugin/plugin.json +9 -0
  258. package/templates/plugins/claude-md-management/LICENSE +202 -0
  259. package/templates/plugins/claude-md-management/README.md +40 -0
  260. package/templates/plugins/claude-md-management/claude-md-improver-example.png +0 -0
  261. package/templates/plugins/claude-md-management/commands/revise-claude-md.md +54 -0
  262. package/templates/plugins/claude-md-management/revise-claude-md-example.png +0 -0
  263. package/templates/plugins/claude-md-management/skills/claude-md-improver/SKILL.md +179 -0
  264. package/templates/plugins/claude-md-management/skills/claude-md-improver/references/quality-criteria.md +109 -0
  265. package/templates/plugins/claude-md-management/skills/claude-md-improver/references/templates.md +253 -0
  266. package/templates/plugins/claude-md-management/skills/claude-md-improver/references/update-guidelines.md +150 -0
  267. package/templates/plugins/code-simplifier/.claude-plugin/plugin.json +9 -0
  268. package/templates/plugins/code-simplifier/LICENSE +202 -0
  269. package/templates/plugins/code-simplifier/agents/code-simplifier.md +52 -0
  270. package/templates/plugins/commit-commands/.claude-plugin/plugin.json +9 -0
  271. package/templates/plugins/commit-commands/LICENSE +202 -0
  272. package/templates/plugins/commit-commands/README.md +225 -0
  273. package/templates/plugins/commit-commands/commands/clean_gone.md +53 -0
  274. package/templates/plugins/commit-commands/commands/commit-push-pr.md +20 -0
  275. package/templates/plugins/commit-commands/commands/commit.md +17 -0
  276. package/templates/trae-bmad/rules/bmad-bmm-check-implementation-readiness.md +2 -2
  277. package/templates/trae-bmad/rules/bmad-bmm-code-review.md +4 -4
  278. package/templates/trae-bmad/rules/bmad-bmm-correct-course.md +4 -4
  279. package/templates/trae-bmad/rules/bmad-bmm-create-architecture.md +2 -2
  280. package/templates/trae-bmad/rules/bmad-bmm-create-epics-and-stories.md +2 -2
  281. package/templates/trae-bmad/rules/bmad-bmm-create-prd.md +2 -2
  282. package/templates/trae-bmad/rules/bmad-bmm-create-product-brief.md +2 -2
  283. package/templates/trae-bmad/rules/bmad-bmm-create-story.md +4 -4
  284. package/templates/trae-bmad/rules/bmad-bmm-create-ux-design.md +2 -2
  285. package/templates/trae-bmad/rules/bmad-bmm-dev-story.md +4 -4
  286. package/templates/trae-bmad/rules/bmad-bmm-document-project.md +4 -4
  287. package/templates/trae-bmad/rules/bmad-bmm-domain-research.md +2 -2
  288. package/templates/trae-bmad/rules/bmad-bmm-edit-prd.md +2 -2
  289. package/templates/trae-bmad/rules/bmad-bmm-generate-project-context.md +2 -2
  290. package/templates/trae-bmad/rules/bmad-bmm-market-research.md +2 -2
  291. package/templates/trae-bmad/rules/bmad-bmm-qa-generate-e2e-tests.md +4 -4
  292. package/templates/trae-bmad/rules/bmad-bmm-quick-dev.md +2 -2
  293. package/templates/trae-bmad/rules/bmad-bmm-quick-spec.md +2 -2
  294. package/templates/trae-bmad/rules/bmad-bmm-retrospective.md +4 -4
  295. package/templates/trae-bmad/rules/bmad-bmm-sprint-planning.md +4 -4
  296. package/templates/trae-bmad/rules/bmad-bmm-sprint-status.md +4 -4
  297. package/templates/trae-bmad/rules/bmad-bmm-technical-research.md +2 -2
  298. package/templates/trae-bmad/rules/bmad-bmm-validate-prd.md +2 -2
  299. package/templates/trae-bmad/rules/bmad-brainstorming.md +2 -2
  300. package/templates/trae-bmad/rules/bmad-editorial-review-prose.md +1 -1
  301. package/templates/trae-bmad/rules/bmad-editorial-review-structure.md +1 -1
  302. package/templates/trae-bmad/rules/bmad-help.md +1 -1
  303. package/templates/trae-bmad/rules/bmad-index-docs.md +1 -1
  304. package/templates/trae-bmad/rules/bmad-party-mode.md +2 -2
  305. package/templates/trae-bmad/rules/bmad-review-adversarial-general.md +1 -1
  306. package/templates/trae-bmad/rules/bmad-review-edge-case-hunter.md +10 -0
  307. package/templates/trae-bmad/rules/bmad-shard-doc.md +1 -1
  308. package/templates/trae-bmad/rules/bmad-tea-teach-me-testing.md +2 -2
  309. package/templates/trae-bmad/rules/bmad-tea-testarch-atdd.md +4 -4
  310. package/templates/trae-bmad/rules/bmad-tea-testarch-automate.md +4 -4
  311. package/templates/trae-bmad/rules/bmad-tea-testarch-ci.md +4 -4
  312. package/templates/trae-bmad/rules/bmad-tea-testarch-framework.md +4 -4
  313. package/templates/trae-bmad/rules/bmad-tea-testarch-nfr.md +4 -4
  314. package/templates/trae-bmad/rules/bmad-tea-testarch-test-design.md +4 -4
  315. package/templates/trae-bmad/rules/bmad-tea-testarch-test-review.md +4 -4
  316. package/templates/trae-bmad/rules/bmad-tea-testarch-trace.md +4 -4
@@ -13,224 +13,90 @@ metadata:
13
13
  emoji: "🦀"
14
14
  requires:
15
15
  bins: ["pinchtab"]
16
- env:
17
- - name: BRIDGE_TOKEN
18
- secret: true
19
- optional: true
20
- description: "Bearer auth token for Pinchtab API"
21
- - name: BRIDGE_BIND
22
- optional: true
23
- description: "Bind address (default: 127.0.0.1, set 0.0.0.0 for network access)"
24
- - name: BRIDGE_PORT
25
- optional: true
26
- description: "HTTP port (default: 9867)"
27
- - name: BRIDGE_HEADLESS
28
- optional: true
29
- description: "Run Chrome headless (true/false)"
30
- - name: BRIDGE_PROFILE
31
- optional: true
32
- description: "Chrome profile directory (default: ~/.pinchtab/chrome-profile)"
33
- - name: BRIDGE_STATE_DIR
34
- optional: true
35
- description: "State/session storage directory (default: ~/.pinchtab)"
36
- - name: BRIDGE_NO_RESTORE
37
- optional: true
38
- description: "Skip restoring tabs from previous session (true/false)"
39
- - name: BRIDGE_STEALTH
40
- optional: true
41
- description: "Stealth level: light (default, basic) or full (canvas/WebGL/font spoofing)"
42
- - name: BRIDGE_MAX_TABS
43
- optional: true
44
- description: "Maximum number of open tabs (default: 20, 0 = unlimited)"
45
- - name: BRIDGE_BLOCK_IMAGES
46
- optional: true
47
- description: "Block image loading for faster, lower-bandwidth browsing (true/false)"
48
- - name: BRIDGE_BLOCK_MEDIA
49
- optional: true
50
- description: "Block all media: images + fonts + CSS + video (true/false)"
51
- - name: BRIDGE_NO_ANIMATIONS
52
- optional: true
53
- description: "Disable CSS animations/transitions globally (true/false)"
54
- - name: BRIDGE_TIMEZONE
55
- optional: true
56
- description: "Force browser timezone (IANA tz, e.g. Europe/Rome)"
57
- - name: BRIDGE_CHROME_VERSION
58
- optional: true
59
- description: "Chrome version string used by fingerprint rotation profiles"
60
- - name: CHROME_BINARY
61
- optional: true
62
- description: "Path to Chrome/Chromium binary (auto-detected if not set)"
63
- - name: CHROME_FLAGS
64
- optional: true
65
- description: "Extra Chrome flags, space-separated"
66
- - name: BRIDGE_CONFIG
67
- optional: true
68
- description: "Path to config JSON file (default: ~/.pinchtab/config.json)"
69
- - name: BRIDGE_TIMEOUT
70
- optional: true
71
- description: "Action timeout in seconds (default: 15)"
72
- - name: BRIDGE_NAV_TIMEOUT
73
- optional: true
74
- description: "Navigation timeout in seconds (default: 30)"
75
- - name: CDP_URL
76
- optional: true
77
- description: "Connect to existing Chrome DevTools instead of launching"
78
- - name: BRIDGE_NO_DASHBOARD
79
- optional: true
80
- description: "Disable dashboard/orchestrator endpoints on instance processes"
81
- - name: PINCHTAB_AUTO_LAUNCH
82
- optional: true
83
- description: "Dashboard mode: auto-launch default profile instance on startup"
84
- - name: PINCHTAB_DEFAULT_PROFILE
85
- optional: true
86
- description: "Dashboard mode: default profile name for auto-launch"
87
- - name: PINCHTAB_DEFAULT_PORT
88
- optional: true
89
- description: "Dashboard mode: default port for auto-launched profile"
90
- - name: PINCHTAB_HEADED
91
- optional: true
92
- description: "Dashboard mode: when set, auto-launched profile runs headed"
93
- - name: PINCHTAB_DASHBOARD_URL
94
- optional: true
95
- description: "Base dashboard URL used by `pinchtab connect` helper"
16
+ env: |
17
+ BRIDGE_TOKEN (optional, secret) - Bearer auth token for Pinchtab API
18
+ BRIDGE_PORT (optional) - HTTP port, default 9867
19
+ BRIDGE_HEADLESS (optional) - true/false for headless Chrome
20
+ BRIDGE_PROFILE (optional) - Chrome profile directory
21
+ BRIDGE_BIND (optional) - Bind address, default 127.0.0.1
96
22
  ---
97
23
 
98
24
  # Pinchtab
99
25
 
100
26
  Fast, lightweight browser control for AI agents via HTTP + accessibility tree.
101
27
 
102
- ## Setup
103
-
104
- Start Pinchtab in one of these modes:
105
-
106
- ```bash
107
- # Headless (default) — no UI, pure automation (lowest token cost when using /text and filtered snapshots)
108
- pinchtab &
109
-
110
- # Headed — visible Chrome for human + agent workflows
111
- BRIDGE_HEADLESS=false pinchtab &
112
-
113
- # Dashboard/orchestrator — profile manager + launcher, no browser in dashboard process
114
- pinchtab dashboard &
115
- ```
116
-
117
- Default port: `9867`. Override with `BRIDGE_PORT=9868`.
118
- Auth: set `BRIDGE_TOKEN=<secret>` and pass `Authorization: Bearer <secret>`.
119
-
120
- Base URL for all examples: `http://localhost:9867`
121
-
122
- Token savings come from the API shape (`/text`, `/snapshot?filter=interactive&format=compact`), not from headless vs headed alone.
123
-
124
- ### Headed mode definition
28
+ **Security Note:** Pinchtab runs entirely locally. It does not contact external services, send telemetry, or exfiltrate data. However, it controls a real Chrome instance — if pointed at a profile with saved logins, agents can access authenticated sites. Always use a dedicated empty profile and set BRIDGE_TOKEN when exposing the API. See [TRUST.md](TRUST.md) for the full security model.
125
29
 
126
- Headed mode means a real visible Chrome window managed by Pinchtab.
30
+ ## Quick Start (Agent Workflow)
127
31
 
128
- - Human can open profile(s), log in, pass 2FA/captcha, and validate page state
129
- - Agent then calls Pinchtab HTTP APIs against that same running profile instance
130
- - Session state persists in the profile directory, so follow-up runs reuse cookies/storage
131
-
132
- In dashboard workflows, the dashboard process itself does not launch Chrome; it launches profile instances that run Chrome (headed or headless).
133
-
134
- To resolve a running profile endpoint from dashboard state:
32
+ The 30-second pattern for browser tasks:
135
33
 
136
34
  ```bash
137
- pinchtab connect <profile-name>
138
- ```
139
-
140
- Recommended human + agent flow:
141
-
142
- ```bash
143
- # human
144
- pinchtab dashboard
145
- # setup profile + launch profile instance
146
-
147
- # agent
148
- PINCHTAB_BASE_URL="$(pinchtab connect <profile-name>)"
149
- curl "$PINCHTAB_BASE_URL/health"
150
- ```
151
-
152
- ## Profile Management (Dashboard Mode)
153
-
154
- When running `pinchtab dashboard`, profiles are managed via the dashboard API on port 9867.
155
-
156
- ### List profiles
35
+ # 1. Start Pinchtab (runs forever, local on :9867)
36
+ pinchtab &
157
37
 
158
- ```bash
159
- curl http://localhost:9867/profiles
38
+ # 2. In your agent, follow this loop:
39
+ # a) Navigate to a URL
40
+ # b) Snapshot the page (get refs like e0, e5, e12)
41
+ # c) Act on a ref (click e5, type e12 "search text")
42
+ # d) Snapshot again to see the result
43
+ # e) Repeat step c-d until done
160
44
  ```
161
45
 
162
- Returns array of profiles with `id`, `name`, `accountEmail`, `useWhen`, etc.
46
+ **That's it.** Refs are stable—you don't need to re-snapshot before every action. Only snapshot when the page changes significantly.
163
47
 
164
- ### Start a profile by ID
48
+ ### Recommended Secure Setup
165
49
 
166
50
  ```bash
167
- # Auto-allocate port (recommended)
168
- curl -X POST http://localhost:9867/profiles/278be873adeb/start
169
-
170
- # With specific port and headless mode
171
- curl -X POST http://localhost:9867/profiles/278be873adeb/start \
172
- -H 'Content-Type: application/json' \
173
- -d '{"port": "9868", "headless": true}'
174
-
175
- # Short alias (same behavior)
176
- curl -X POST http://localhost:9867/start/278be873adeb
51
+ # Best practice for AI agents
52
+ BRIDGE_BIND=127.0.0.1 \
53
+ BRIDGE_TOKEN="your-strong-secret" \
54
+ BRIDGE_PROFILE=~/.pinchtab/automation-profile \
55
+ pinchtab &
177
56
  ```
178
57
 
179
- Returns the instance info including the allocated `port`. Use that port for all subsequent API calls (navigate, snapshot, action, etc.).
58
+ **Never expose to 0.0.0.0 without a token. Never point at your daily Chrome profile.**
180
59
 
181
- ### Stop a profile by ID
60
+ ## Setup
182
61
 
183
62
  ```bash
184
- curl -X POST http://localhost:9867/profiles/278be873adeb/stop
185
-
186
- # Short alias
187
- curl -X POST http://localhost:9867/stop/278be873adeb
188
- ```
189
-
190
- ### Check profile instance status
63
+ # Headless (default) — no visible window
64
+ pinchtab &
191
65
 
192
- ```bash
193
- # By profile ID (recommended)
194
- curl http://localhost:9867/profiles/278be873adeb/instance
66
+ # Headed — visible Chrome window for human debugging
67
+ BRIDGE_HEADLESS=false pinchtab &
195
68
 
196
- # By profile name (also works)
197
- curl http://localhost:9867/profiles/Pinchtab%20org/instance
198
- ```
69
+ # With auth token
70
+ BRIDGE_TOKEN="your-secret-token" pinchtab &
199
71
 
200
- ### Launch by name (dashboard style)
72
+ # Custom port
73
+ BRIDGE_PORT=8080 pinchtab &
201
74
 
202
- ```bash
203
- curl -X POST http://localhost:9867/instances/launch \
204
- -H 'Content-Type: application/json' \
205
- -d '{"name": "work", "port": "9868"}'
75
+ # Dashboard/orchestrator — profile manager + tab launcher
76
+ pinchtab dashboard &
206
77
  ```
207
78
 
208
- ### Typical agent flow with profiles
79
+ Default: **port 9867**, no auth required (local). Set `BRIDGE_TOKEN` for remote access.
209
80
 
210
- ```bash
211
- # 1. List profiles to find the right one
212
- PROFILES=$(curl -s http://localhost:9867/profiles)
213
- # Pick the profile ID you need (12-char hex, e.g. "278be873adeb")
214
-
215
- # 2. Start the profile (auto-allocates port)
216
- INSTANCE=$(curl -s -X POST http://localhost:9867/profiles/$PROFILE_ID/start)
217
- PORT=$(echo $INSTANCE | jq -r .port)
81
+ For advanced setup, see [references/profiles.md](references/profiles.md) and [references/env.md](references/env.md).
218
82
 
219
- # 3. Use the instance (all API calls go to the instance port)
220
- curl -X POST http://localhost:$PORT/navigate -H 'Content-Type: application/json' \
221
- -d '{"url": "https://mail.google.com"}'
222
- curl http://localhost:$PORT/snapshot?maxTokens=4000
83
+ ## What a Snapshot Looks Like
223
84
 
224
- # 4. Check instance status
225
- curl http://localhost:9867/profiles/$PROFILE_ID/instance
85
+ After calling `/snapshot`, you get the page's accessibility tree as JSON—flat list of elements with refs:
226
86
 
227
- # 5. Stop when done
228
- curl -s -X POST http://localhost:9867/profiles/$PROFILE_ID/stop
87
+ ```json
88
+ {
89
+ "refs": [
90
+ {"id": "e0", "role": "link", "text": "Sign In", "selector": "a[href='/login']"},
91
+ {"id": "e1", "role": "textbox", "label": "Email", "selector": "input[name='email']"},
92
+ {"id": "e2", "role": "button", "text": "Submit", "selector": "button[type='submit']"}
93
+ ],
94
+ "text": "... readable text version of page ...",
95
+ "title": "Login Page"
96
+ }
229
97
  ```
230
98
 
231
- ### Profile IDs
232
-
233
- Each profile gets a stable 12-char hex ID (SHA-256 of name, truncated) stored in `profile.json`. The ID is generated at creation time and never changes. Use IDs instead of names in automation — they're URL-safe and stable.
99
+ Then you act on refs: `click e0`, `type e1 "user@example.com"`, `press e2 Enter`.
234
100
 
235
101
  ## Core Workflow
236
102
 
@@ -243,268 +109,22 @@ The typical agent loop:
243
109
 
244
110
  Refs (e.g. `e0`, `e5`, `e12`) are cached per tab after each snapshot — no need to re-snapshot before every action unless the page changed significantly.
245
111
 
246
- ## API Reference
247
-
248
- ### Navigate
249
-
250
- ```bash
251
- curl -X POST http://localhost:9867/navigate \
252
- -H 'Content-Type: application/json' \
253
- -d '{"url": "https://example.com"}'
254
-
255
- # With options: custom timeout, block images, open in new tab
256
- curl -X POST http://localhost:9867/navigate \
257
- -H 'Content-Type: application/json' \
258
- -d '{"url": "https://example.com", "timeout": 60, "blockImages": true, "newTab": true}'
259
- ```
260
-
261
- ### Snapshot (accessibility tree)
262
-
263
- ```bash
264
- # Full tree
265
- curl http://localhost:9867/snapshot
266
-
267
- # Interactive elements only (buttons, links, inputs) — much smaller
268
- curl "http://localhost:9867/snapshot?filter=interactive"
269
-
270
- # Limit depth
271
- curl "http://localhost:9867/snapshot?depth=5"
272
-
273
- # Smart diff — only changes since last snapshot (massive token savings)
274
- curl "http://localhost:9867/snapshot?diff=true"
275
-
276
- # Text format — indented tree, ~40-60% fewer tokens than JSON
277
- curl "http://localhost:9867/snapshot?format=text"
278
-
279
- # Compact format — one-line-per-node, 56-64% fewer tokens than JSON (recommended)
280
- curl "http://localhost:9867/snapshot?format=compact"
281
-
282
- # YAML format
283
- curl "http://localhost:9867/snapshot?format=yaml"
284
-
285
- # Scope to CSS selector (e.g. main content only)
286
- curl "http://localhost:9867/snapshot?selector=main"
287
-
288
- # Truncate to ~N tokens
289
- curl "http://localhost:9867/snapshot?maxTokens=2000"
290
-
291
- # Combine for maximum efficiency
292
- curl "http://localhost:9867/snapshot?format=compact&selector=main&maxTokens=2000&filter=interactive"
293
-
294
- # Disable animations before capture
295
- curl "http://localhost:9867/snapshot?noAnimations=true"
296
-
297
- # Write to file
298
- curl "http://localhost:9867/snapshot?output=file&path=/tmp/snapshot.json"
299
- ```
300
-
301
- Returns flat JSON array of nodes with `ref`, `role`, `name`, `depth`, `value`, `nodeId`.
302
-
303
- **Token optimization**: Use `?format=compact` for best token efficiency. Add `?filter=interactive` for action-oriented tasks (~75% fewer nodes). Use `?selector=main` to scope to relevant content. Use `?maxTokens=2000` to cap output. Use `?diff=true` on multi-step workflows to see only changes. Combine all params freely.
304
-
305
- ### Act on elements
112
+ ### Quick examples
306
113
 
307
114
  ```bash
308
- # Click by ref
309
- curl -X POST http://localhost:9867/action \
310
- -H 'Content-Type: application/json' \
311
- -d '{"kind": "click", "ref": "e5"}'
312
-
313
- # Type into focused element (click first, then type)
314
- curl -X POST http://localhost:9867/action \
315
- -H 'Content-Type: application/json' \
316
- -d '{"kind": "click", "ref": "e12"}'
317
- curl -X POST http://localhost:9867/action \
318
- -H 'Content-Type: application/json' \
319
- -d '{"kind": "type", "ref": "e12", "text": "hello world"}'
320
-
321
- # Press a key
322
- curl -X POST http://localhost:9867/action \
323
- -H 'Content-Type: application/json' \
324
- -d '{"kind": "press", "key": "Enter"}'
325
-
326
- # Focus an element
327
- curl -X POST http://localhost:9867/action \
328
- -H 'Content-Type: application/json' \
329
- -d '{"kind": "focus", "ref": "e3"}'
330
-
331
- # Fill (set value directly, no keystrokes)
332
- curl -X POST http://localhost:9867/action \
333
- -H 'Content-Type: application/json' \
334
- -d '{"kind": "fill", "selector": "#email", "text": "user@example.com"}'
335
-
336
- # Hover (trigger dropdowns/tooltips)
337
- curl -X POST http://localhost:9867/action \
338
- -H 'Content-Type: application/json' \
339
- -d '{"kind": "hover", "ref": "e8"}'
340
-
341
- # Select dropdown option (by value or visible text)
342
- curl -X POST http://localhost:9867/action \
343
- -H 'Content-Type: application/json' \
344
- -d '{"kind": "select", "ref": "e10", "value": "option2"}'
345
-
346
- # Scroll to element
347
- curl -X POST http://localhost:9867/action \
348
- -H 'Content-Type: application/json' \
349
- -d '{"kind": "scroll", "ref": "e20"}'
350
-
351
- # Scroll by pixels (infinite scroll pages)
352
- curl -X POST http://localhost:9867/action \
353
- -H 'Content-Type: application/json' \
354
- -d '{"kind": "scroll", "scrollY": 800}'
355
-
356
- # Click and wait for navigation (link clicks)
357
- curl -X POST http://localhost:9867/action \
358
- -H 'Content-Type: application/json' \
359
- -d '{"kind": "click", "ref": "e5", "waitNav": true}'
115
+ pinchtab nav https://example.com
116
+ pinchtab snap -i -c # interactive + compact
117
+ pinchtab click e5
118
+ pinchtab type e12 hello world
119
+ pinchtab press Enter
120
+ pinchtab text # readable text (~1K tokens)
121
+ pinchtab text | jq .text # pipe to jq
122
+ pinchtab ss -o page.jpg # screenshot
123
+ pinchtab eval "document.title" # run JavaScript
124
+ pinchtab pdf -o page.pdf # export PDF
360
125
  ```
361
126
 
362
- ### Extract text
363
-
364
- ```bash
365
- # Readability mode (default) — strips nav/footer/ads, keeps article/main content
366
- curl http://localhost:9867/text
367
-
368
- # Raw innerText (old behavior)
369
- curl "http://localhost:9867/text?mode=raw"
370
- ```
371
-
372
- Returns `{url, title, text}`. Cheapest option (~1K tokens for most pages).
373
-
374
- ### Download files
375
-
376
- ```bash
377
- # Download using browser session (preserves cookies, auth, stealth)
378
- # Returns base64 JSON by default
379
- curl "http://localhost:9867/download?url=https://site.com/report.pdf"
380
-
381
- # Raw bytes (pipe to file)
382
- curl "http://localhost:9867/download?url=https://site.com/image.jpg&raw=true" -o image.jpg
383
-
384
- # Save directly to disk
385
- curl "http://localhost:9867/download?url=https://site.com/export.csv&output=file&path=/tmp/export.csv"
386
- ```
387
-
388
- Key use case: downloading files from authenticated sites — the browser's cookies and stealth settings are used automatically. No need to extract cookies and use curl separately.
389
-
390
- ### Upload files
391
-
392
- ```bash
393
- # Upload a local file to a file input
394
- curl -X POST "http://localhost:9867/upload?tabId=TAB_ID" \
395
- -H "Content-Type: application/json" \
396
- -d '{"selector": "input[type=file]", "paths": ["/tmp/photo.jpg"]}'
397
-
398
- # Upload base64-encoded data
399
- curl -X POST "http://localhost:9867/upload" \
400
- -H "Content-Type: application/json" \
401
- -d '{"selector": "#avatar-input", "files": ["data:image/png;base64,iVBOR..."]}'
402
-
403
- # Combine both — local files + base64
404
- curl -X POST "http://localhost:9867/upload" \
405
- -H "Content-Type: application/json" \
406
- -d '{"selector": "input[type=file]", "paths": ["/tmp/doc.pdf"], "files": ["data:image/png;base64,..."]}'
407
- ```
408
-
409
- Sets files on `<input type=file>` elements via CDP. The browser fires `change` events as if the user picked files. Selector defaults to `input[type=file]` if omitted. Supports base64 data URLs, raw base64 strings, and local file paths.
410
-
411
- ### Screenshot
412
-
413
- ```bash
414
- # Raw JPEG bytes
415
- curl "http://localhost:9867/screenshot?raw=true" -o screenshot.jpg
416
-
417
- # With quality setting (default 80)
418
- curl "http://localhost:9867/screenshot?raw=true&quality=50" -o screenshot.jpg
419
- ```
420
-
421
- ### Evaluate JavaScript
422
-
423
- ```bash
424
- curl -X POST http://localhost:9867/evaluate \
425
- -H 'Content-Type: application/json' \
426
- -d '{"expression": "document.title"}'
427
- ```
428
-
429
- ### Tab management
430
-
431
- ```bash
432
- # List tabs
433
- curl http://localhost:9867/tabs
434
-
435
- # Open new tab
436
- curl -X POST http://localhost:9867/tab \
437
- -H 'Content-Type: application/json' \
438
- -d '{"action": "new", "url": "https://example.com"}'
439
-
440
- # Close tab
441
- curl -X POST http://localhost:9867/tab \
442
- -H 'Content-Type: application/json' \
443
- -d '{"action": "close", "tabId": "TARGET_ID"}'
444
- ```
445
-
446
- Multi-tab: pass `?tabId=TARGET_ID` to snapshot/screenshot/text, or `"tabId"` in POST body.
447
-
448
- ### Tab locking (multi-agent)
449
-
450
- ```bash
451
- # Lock a tab (default 30s timeout, max 5min)
452
- curl -X POST http://localhost:9867/tab/lock \
453
- -H 'Content-Type: application/json' \
454
- -d '{"tabId": "TARGET_ID", "owner": "agent-1", "timeoutSec": 60}'
455
-
456
- # Unlock
457
- curl -X POST http://localhost:9867/tab/unlock \
458
- -H 'Content-Type: application/json' \
459
- -d '{"tabId": "TARGET_ID", "owner": "agent-1"}'
460
- ```
461
-
462
- Locked tabs show `owner` and `lockedUntil` in `/tabs`. Returns 409 on conflict.
463
-
464
- ### Batch actions
465
-
466
- ```bash
467
- # Execute multiple actions in sequence
468
- curl -X POST http://localhost:9867/actions \
469
- -H 'Content-Type: application/json' \
470
- -d '{"actions":[{"kind":"click","ref":"e3"},{"kind":"type","ref":"e3","text":"hello"},{"kind":"press","key":"Enter"}]}'
471
-
472
- # Stop on first error (default: false, continues through all)
473
- curl -X POST http://localhost:9867/actions \
474
- -H 'Content-Type: application/json' \
475
- -d '{"tabId":"TARGET_ID","actions":[...],"stopOnError":true}'
476
- ```
477
-
478
- ### Cookies
479
-
480
- ```bash
481
- # Get cookies for current page
482
- curl http://localhost:9867/cookies
483
-
484
- # Set cookies
485
- curl -X POST http://localhost:9867/cookies \
486
- -H 'Content-Type: application/json' \
487
- -d '{"url":"https://example.com","cookies":[{"name":"session","value":"abc123"}]}'
488
- ```
489
-
490
- ### Stealth
491
-
492
- ```bash
493
- # Check stealth status and score
494
- curl http://localhost:9867/stealth/status
495
-
496
- # Rotate browser fingerprint
497
- curl -X POST http://localhost:9867/fingerprint/rotate \
498
- -H 'Content-Type: application/json' \
499
- -d '{"os":"windows"}'
500
- # os: "windows", "mac", or omit for random
501
- ```
502
-
503
- ### Health check
504
-
505
- ```bash
506
- curl http://localhost:9867/health
507
- ```
127
+ For the full HTTP API (curl examples, download, upload, cookies, stealth, batch actions, PDF export with full parameter control), see [references/api.md](references/api.md).
508
128
 
509
129
  ## Token Cost Guide
510
130
 
@@ -513,58 +133,41 @@ curl http://localhost:9867/health
513
133
  | `/text` | ~800 | Reading page content |
514
134
  | `/snapshot?filter=interactive` | ~3,600 | Finding buttons/links to click |
515
135
  | `/snapshot?diff=true` | varies | Multi-step workflows (only changes) |
516
- | `/snapshot?format=compact` | ~56-64% less | One-line-per-node, best token efficiency |
517
- | `/snapshot?format=text` | ~40-60% less | Indented tree, cheaper than JSON |
136
+ | `/snapshot?format=compact` | ~56-64% less | One-line-per-node, best efficiency |
518
137
  | `/snapshot` | ~10,500 | Full page understanding |
519
138
  | `/screenshot` | ~2K (vision) | Visual verification |
139
+ | `/pdf` | 0 (binary) | Export page as PDF (no token cost) |
520
140
 
521
- **Strategy**: Start with `/snapshot?filter=interactive`. Use `?diff=true` on subsequent snapshots in multi-step tasks. Use `/text` when you only need the readable content. Use `?format=text` to cut token costs further. Use full `/snapshot` only for complete page understanding.
141
+ **Strategy**: Start with `?filter=interactive&format=compact`. Use `?diff=true` on subsequent snapshots. Use `/text` when you only need readable content. Full `/snapshot` only when needed.
522
142
 
523
- ## Environment Variables
143
+ ## Agent Optimization
524
144
 
525
- ### Core runtime
145
+ **Validated Feb 2026**: Testing with AI agents revealed a critical pattern for reliable, token-efficient scraping.
526
146
 
527
- | Var | Default | Description |
528
- |---|---|---|
529
- | `BRIDGE_BIND` | `127.0.0.1` | Bind address — localhost only by default. Set `0.0.0.0` for network access |
530
- | `BRIDGE_PORT` | `9867` | HTTP port |
531
- | `BRIDGE_HEADLESS` | `true` | Run Chrome headless |
532
- | `BRIDGE_TOKEN` | (none) | Bearer auth token (recommended when using `BRIDGE_BIND=0.0.0.0`) |
533
- | `BRIDGE_PROFILE` | `~/.pinchtab/chrome-profile` | Chrome profile dir |
534
- | `BRIDGE_STATE_DIR` | `~/.pinchtab` | State/session storage |
535
- | `BRIDGE_NO_RESTORE` | `false` | Skip tab restore on startup |
536
- | `BRIDGE_STEALTH` | `light` | Stealth level: `light` or `full` |
537
- | `BRIDGE_MAX_TABS` | `20` | Max open tabs (0 = unlimited) |
538
- | `BRIDGE_BLOCK_IMAGES` | `false` | Block image loading |
539
- | `BRIDGE_BLOCK_MEDIA` | `false` | Block all media (images + fonts + CSS + video) |
540
- | `BRIDGE_NO_ANIMATIONS` | `false` | Disable CSS animations/transitions |
541
- | `BRIDGE_TIMEZONE` | (none) | Force browser timezone (IANA tz) |
542
- | `BRIDGE_CHROME_VERSION` | `144.0.7559.133` | Chrome version string used by fingerprint rotation |
543
- | `CHROME_BINARY` | (auto) | Path to Chrome/Chromium binary |
544
- | `CHROME_FLAGS` | (none) | Extra Chrome flags (space-separated) |
545
- | `BRIDGE_CONFIG` | `~/.pinchtab/config.json` | Path to config JSON file |
546
- | `BRIDGE_TIMEOUT` | `15` | Action timeout (seconds) |
547
- | `BRIDGE_NAV_TIMEOUT` | `30` | Navigation timeout (seconds) |
548
- | `CDP_URL` | (none) | Connect to existing Chrome DevTools |
549
- | `BRIDGE_NO_DASHBOARD` | `false` | Disable dashboard/orchestrator endpoints on instance processes |
550
-
551
- ### Dashboard mode (`pinchtab dashboard`)
552
-
553
- | Var | Default | Description |
554
- |---|---|---|
555
- | `PINCHTAB_AUTO_LAUNCH` | `false` | Auto-launch a default profile at dashboard startup |
556
- | `PINCHTAB_DEFAULT_PROFILE` | `default` | Profile name for auto-launch |
557
- | `PINCHTAB_DEFAULT_PORT` | `9867` | Port for auto-launched profile |
558
- | `PINCHTAB_HEADED` | (unset) | If set, auto-launched profile is headed; unset means headless |
559
- | `PINCHTAB_DASHBOARD_URL` | `http://localhost:$BRIDGE_PORT` | CLI helper base URL for `pinchtab connect` |
147
+ **See the full guide:** [docs/agent-optimization.md](../../docs/agent-optimization.md)
148
+
149
+ ### Quick Summary
150
+
151
+ **The 3-second pattern** wait after navigate before snapshot:
152
+
153
+ ```bash
154
+ curl -X POST http://localhost:9867/navigate \
155
+ -H "Content-Type: application/json" \
156
+ -d '{"url": "https://example.com"}' && \
157
+ sleep 3 && \
158
+ curl http://localhost:9867/snapshot | jq '.nodes[] | select(.name | length > 15) | .name'
159
+ ```
160
+
161
+ **Token savings:** 93% reduction (3,842 → 272 tokens) when using prescriptive instructions vs. exploratory agent approach.
162
+
163
+ For detailed findings, system prompt templates, and site-specific notes, see [docs/agent-optimization.md](../../docs/agent-optimization.md).
560
164
 
561
165
  ## Tips
562
166
 
563
- - **Always pass `tabId` explicitly** when working with multiple tabs — active tab tracking can be unreliable
167
+ - **Always pass `tabId` explicitly** when working with multiple tabs
564
168
  - Refs are stable between snapshot and actions — no need to re-snapshot before clicking
565
- - After navigation or major page changes, take a new snapshot to get fresh refs
566
- - Use `filter=interactive` by default, fall back to full snapshot when needed
169
+ - After navigation or major page changes, take a new snapshot for fresh refs
567
170
  - Pinchtab persists sessions — tabs survive restarts (disable with `BRIDGE_NO_RESTORE=true`)
568
171
  - Chrome profile is persistent — cookies/logins carry over between runs
569
- - Chrome uses its native User-Agent by default `BRIDGE_CHROME_VERSION` only affects fingerprint rotation
570
- - Use `BRIDGE_BLOCK_IMAGES=true` or `"blockImages": true` on navigate for read-heavy tasks reduces bandwidth and memory
172
+ - Use `BRIDGE_BLOCK_IMAGES=true` or `"blockImages": true` on navigate for read-heavy tasks
173
+ - **Wait 3+ seconds after navigate before snapshot** Chrome needs time to render 2000+ accessibility tree nodes