codymaster 4.1.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 (193) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +285 -0
  3. package/adapters/antigravity.js +15 -0
  4. package/adapters/claude-code.js +17 -0
  5. package/adapters/cursor.js +16 -0
  6. package/commands/bootstrap.md +49 -0
  7. package/commands/build.md +48 -0
  8. package/commands/content.md +48 -0
  9. package/commands/continuity.md +60 -0
  10. package/commands/debug.md +51 -0
  11. package/commands/demo.md +96 -0
  12. package/commands/deploy.md +51 -0
  13. package/commands/plan.md +42 -0
  14. package/commands/review.md +55 -0
  15. package/commands/track.md +46 -0
  16. package/commands/ux.md +46 -0
  17. package/dist/agent-dispatch.js +161 -0
  18. package/dist/chains/builtin.js +85 -0
  19. package/dist/continuity.js +385 -0
  20. package/dist/dashboard.js +926 -0
  21. package/dist/data.js +122 -0
  22. package/dist/index.js +2434 -0
  23. package/dist/judge.js +252 -0
  24. package/dist/parallel-dispatch.js +359 -0
  25. package/dist/parallel-quality.js +172 -0
  26. package/dist/skill-chain.js +258 -0
  27. package/install.sh +513 -0
  28. package/package.json +79 -0
  29. package/skills/.content-factory-state.json +132 -0
  30. package/skills/.git 2/logs/refs/heads/main +1 -0
  31. package/skills/.git 2/logs/refs/remotes/origin/main +1 -0
  32. package/skills/.git 2/objects/02/fb0956734b5f8ba3f918b7defd04a89cfe0076 +0 -0
  33. package/skills/.git 2/objects/08/1e129d75dc6feac6c02037272e6bd1a04e3324 +0 -0
  34. package/skills/.git 2/objects/0c/5393416f3c5e01c9a655a802bff0dd52f76f0a +0 -0
  35. package/skills/.git 2/objects/10/0b9be46978a946a77188f68be725098a122001 +0 -0
  36. package/skills/.git 2/objects/10/cf041167fc9843610eb3d90259ef3396315fdc +0 -0
  37. package/skills/.git 2/objects/12/5e19538dd6e1338ffe74f6c4c165b00435bf48 +0 -0
  38. package/skills/.git 2/objects/16/a9b9d0088d5c1347628b45a2620b479d8ad57c +0 -0
  39. package/skills/.git 2/objects/17/8c2a9ef93c33ae4eec9d58e82321f9229843a1 +0 -0
  40. package/skills/.git 2/objects/25/397ae41d09104d763bdcac2695209d85cdea89 +0 -0
  41. package/skills/.git 2/objects/2f/a836b7947f2d458e1f639788bf4bb0983a3305 +0 -0
  42. package/skills/.git 2/objects/3a/baaaf0a1c0909c0828335791557125fba911e0 +0 -0
  43. package/skills/.git 2/objects/42/2924221b81f5ce3c4e4daac9a64a24f9b01f9a +0 -0
  44. package/skills/.git 2/objects/42/ec0ce707447dc11446a34c9995fb8533801731 +0 -0
  45. package/skills/.git 2/objects/46/e43ce92866d56ce74b1d750db307cfe6154a15 +0 -0
  46. package/skills/.git 2/objects/48/5e41b633c63f55b8277bcc59f44f67681f671a +0 -0
  47. package/skills/.git 2/objects/49/49c596a3a89fa240642acd95dd3258e261eb09 +0 -0
  48. package/skills/.git 2/objects/50/9d42d8412ef8eaf7f7e138476bac2e4d10ce60 +0 -0
  49. package/skills/.git 2/objects/55/0c8c389d981b463ef849aeb792d8be3ccb6ec8 +0 -0
  50. package/skills/.git 2/objects/5d/82d3b18410cdda3ace3677436f0cb599dbe2d2 +0 -0
  51. package/skills/.git 2/objects/60/0617c58e871a38b33bf29e282d132bb3c381ad +0 -0
  52. package/skills/.git 2/objects/6a/8369a99c687b7245c92ffaf0e0f0dab9014504 +0 -0
  53. package/skills/.git 2/objects/79/bea435d40ab531c1aaf6be0432c6a5b7aaed21 +0 -0
  54. package/skills/.git 2/objects/7e/5ebd79251c2f14e4aceb86c74b6b6daae6b500 +0 -0
  55. package/skills/.git 2/objects/81/98a822a60178d6d5023ddb3e222cddf048742e +0 -0
  56. package/skills/.git 2/objects/86/0a0e1943dfe53411d2e499a1f16f46a96ef758 +0 -0
  57. package/skills/.git 2/objects/86/971fb55fdc081fdbae52376f0f13e57a4e9b04 +0 -0
  58. package/skills/.git 2/objects/88/b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d +0 -0
  59. package/skills/.git 2/objects/90/8737edb6b7809e32cc01590b4e08ba42a9d40d +0 -0
  60. package/skills/.git 2/objects/93/d5a8a9a7d4fb7f11491cb596a6880528725118 +0 -0
  61. package/skills/.git 2/objects/98/46a2ab81d0c3b3eb00ef88fc56989aa7e9f316 +0 -0
  62. package/skills/.git 2/objects/9b/d8dd1e49cf274eaf9c555f3ab39dce7af5715e +0 -0
  63. package/skills/.git 2/objects/a1/13329fb0cec96ae78b222d33a24c3b5bc7fa1f +0 -0
  64. package/skills/.git 2/objects/a9/e6effe626e8a3aea3a8fc3364b492191c6e7d0 +0 -0
  65. package/skills/.git 2/objects/ad/6de7e48d9782cca9353d1ff0aa1aab7fe1df85 +0 -0
  66. package/skills/.git 2/objects/af/54ae316f771ff692e299ffcd8bf2f06b413b59 +0 -0
  67. package/skills/.git 2/objects/b0/4cb8b0b00dad633e731c1472161419e738d674 +0 -0
  68. package/skills/.git 2/objects/b3/094abb0b9ed46419b269e4a4e36a459690e3b0 +0 -0
  69. package/skills/.git 2/objects/b9/435c5d4baac2cfc5c83009ddd27b46b60db5f1 +0 -0
  70. package/skills/.git 2/objects/ba/5da17dbaec5ec2dcfdfd126aead518d1171d5c +0 -0
  71. package/skills/.git 2/objects/c0/bf58703aa258ba5dd63083bebaec8f223d844c +0 -0
  72. package/skills/.git 2/objects/c4/701a34edf1fc1bad58ccc57bd03f9426acb59a +0 -0
  73. package/skills/.git 2/objects/c7/5ccce9a4e5cc74d9b3174550cf6d993ca43638 +0 -0
  74. package/skills/.git 2/objects/c7/710d59b5a35b0f1f0a0399386643a0bd94c929 +0 -0
  75. package/skills/.git 2/objects/d1/fe58237112e953e5fec52da22cf38e08be3df9 +5 -0
  76. package/skills/.git 2/objects/d2/2bbe9fd2f74c95bc5583e803f5e435f1e2cd86 +0 -0
  77. package/skills/.git 2/objects/d7/e72852ea2bff74581dbf247d400120086229f4 +0 -0
  78. package/skills/.git 2/objects/d8/d4c3b5553e4fd72807e1d4b49ef07d9ef3ac35 +0 -0
  79. package/skills/.git 2/objects/dc/75050c2876f6a02ae2a53a3c886f395b622977 +0 -0
  80. package/skills/.git 2/objects/ee/e8546f95acec500187c08a28a8b9ee02db0dec +0 -0
  81. package/skills/.git 2/objects/ef/263c059208b416c2146434f10cb2b9fabcba16 +0 -0
  82. package/skills/.git 2/objects/f3/ae597e84d9a59b88acd21c99bde2eaf686d785 +0 -0
  83. package/skills/.git 2/objects/f3/f6f5673c821d3d8e76fa267a9e882e7a5387ea +0 -0
  84. package/skills/.git 2/objects/f9/6e6d0ad02624dd11d5848594d056caef7a5e8b +0 -0
  85. package/skills/.git 2/objects/ff/278988fc1edf0db3abcf18de795f4cc0b4f3e1 +0 -0
  86. package/skills/.git 2/refs/heads/main +1 -0
  87. package/skills/.git 2/refs/remotes/origin/main +1 -0
  88. package/skills/.pytest_cache 2/v/cache/nodeids +76 -0
  89. package/skills/.pytest_cache 2/v/cache/stepwise +1 -0
  90. package/skills/_shared/helpers.md +123 -0
  91. package/skills/_shared/outputs-convention.md +24 -0
  92. package/skills/cm-ads-tracker/SKILL.md +109 -0
  93. package/skills/cm-ads-tracker/evals/evals.json +55 -0
  94. package/skills/cm-ads-tracker/references/gtm-architecture.md +321 -0
  95. package/skills/cm-ads-tracker/references/industry-events.md +294 -0
  96. package/skills/cm-ads-tracker/references/platforms-api.md +238 -0
  97. package/skills/cm-ads-tracker/templates/capi-payload.md +79 -0
  98. package/skills/cm-ads-tracker/templates/datalayer-push.js +104 -0
  99. package/skills/cm-ads-tracker/templates/gtm-variables.js +56 -0
  100. package/skills/cm-brainstorm-idea/SKILL.md +423 -0
  101. package/skills/cm-code-review/SKILL.md +151 -0
  102. package/skills/cm-content-factory/SKILL.md +416 -0
  103. package/skills/cm-continuity/SKILL.md +399 -0
  104. package/skills/cm-dashboard/SKILL.md +533 -0
  105. package/skills/cm-dashboard/ui/app.js +1270 -0
  106. package/skills/cm-dashboard/ui/index.html +206 -0
  107. package/skills/cm-dashboard/ui/style.css +440 -0
  108. package/skills/cm-debugging/SKILL.md +412 -0
  109. package/skills/cm-deep-search/SKILL.md +242 -0
  110. package/skills/cm-design-system/SKILL.md +97 -0
  111. package/skills/cm-design-system/resources/halo-modern.md +40 -0
  112. package/skills/cm-design-system/resources/lunaris-advanced.md +40 -0
  113. package/skills/cm-design-system/resources/nitro-enterprise.md +39 -0
  114. package/skills/cm-design-system/resources/shadcn-default.md +37 -0
  115. package/skills/cm-dockit/README.md +100 -0
  116. package/skills/cm-dockit/SKILL.md +302 -0
  117. package/skills/cm-dockit/index.html +443 -0
  118. package/skills/cm-dockit/package-lock.json +1850 -0
  119. package/skills/cm-dockit/package.json +14 -0
  120. package/skills/cm-dockit/prompts/analysis.md +34 -0
  121. package/skills/cm-dockit/prompts/api-reference.md +24 -0
  122. package/skills/cm-dockit/prompts/architecture.md +21 -0
  123. package/skills/cm-dockit/prompts/data-flow.md +20 -0
  124. package/skills/cm-dockit/prompts/database.md +21 -0
  125. package/skills/cm-dockit/prompts/deployment.md +22 -0
  126. package/skills/cm-dockit/prompts/flows.md +21 -0
  127. package/skills/cm-dockit/prompts/jtbd.md +20 -0
  128. package/skills/cm-dockit/prompts/personas.md +24 -0
  129. package/skills/cm-dockit/prompts/sop-modules.md +40 -0
  130. package/skills/cm-dockit/scripts/doc-gen.sh +121 -0
  131. package/skills/cm-dockit/scripts/dockit-dashboard.sh +142 -0
  132. package/skills/cm-dockit/scripts/dockit-runner.sh +607 -0
  133. package/skills/cm-dockit/scripts/dockit-task.sh +166 -0
  134. package/skills/cm-dockit/skills/analyze-codebase.md +174 -0
  135. package/skills/cm-dockit/skills/api-reference.md +237 -0
  136. package/skills/cm-dockit/skills/changelog-guide.md +195 -0
  137. package/skills/cm-dockit/skills/content-guidelines.md +190 -0
  138. package/skills/cm-dockit/skills/sop-guide.md +184 -0
  139. package/skills/cm-dockit/skills/tech-docs.md +287 -0
  140. package/skills/cm-dockit/templates/markdown/structure.md +60 -0
  141. package/skills/cm-dockit/templates/vitepress-premium/.vitepress/config.mts +110 -0
  142. package/skills/cm-dockit/templates/vitepress-premium/.vitepress/theme/custom.css +189 -0
  143. package/skills/cm-dockit/templates/vitepress-premium/.vitepress/theme/index.ts +4 -0
  144. package/skills/cm-dockit/templates/vitepress-premium/package.json +19 -0
  145. package/skills/cm-dockit/templates/vitepress-premium/tests/frontend.test.ts +45 -0
  146. package/skills/cm-dockit/tests/runner.test.ts +66 -0
  147. package/skills/cm-dockit/workflows/export-markdown.md +82 -0
  148. package/skills/cm-dockit/workflows/generate-docs.md +68 -0
  149. package/skills/cm-dockit/workflows/setup-vitepress.md +181 -0
  150. package/skills/cm-example/SKILL.md +26 -0
  151. package/skills/cm-execution/SKILL.md +268 -0
  152. package/skills/cm-git-worktrees/SKILL.md +164 -0
  153. package/skills/cm-how-it-work/SKILL.md +189 -0
  154. package/skills/cm-identity-guard/SKILL.md +412 -0
  155. package/skills/cm-jtbd/SKILL.md +98 -0
  156. package/skills/cm-planning/SKILL.md +130 -0
  157. package/skills/cm-project-bootstrap/SKILL.md +161 -0
  158. package/skills/cm-project-bootstrap/templates/AGENTS.md +42 -0
  159. package/skills/cm-project-bootstrap/templates/frontend-safety.test.js +51 -0
  160. package/skills/cm-project-bootstrap/templates/i18n-sync.test.js +38 -0
  161. package/skills/cm-project-bootstrap/templates/pr-template.md +12 -0
  162. package/skills/cm-project-bootstrap/templates/project-identity.json +29 -0
  163. package/skills/cm-project-bootstrap/templates/vitest.config.js +10 -0
  164. package/skills/cm-quality-gate/SKILL.md +218 -0
  165. package/skills/cm-readit/SKILL.md +289 -0
  166. package/skills/cm-readit/audio-player.md +206 -0
  167. package/skills/cm-readit/examples/blog-reader.js +352 -0
  168. package/skills/cm-readit/examples/voice-cro.js +390 -0
  169. package/skills/cm-readit/tts-engine.md +262 -0
  170. package/skills/cm-readit/ui-patterns.md +362 -0
  171. package/skills/cm-readit/voice-cro.md +223 -0
  172. package/skills/cm-safe-deploy/SKILL.md +120 -0
  173. package/skills/cm-safe-deploy/templates/deploy.sh +89 -0
  174. package/skills/cm-safe-i18n/SKILL.md +473 -0
  175. package/skills/cm-secret-shield/SKILL.md +580 -0
  176. package/skills/cm-skill-chain/SKILL.md +78 -0
  177. package/skills/cm-skill-index/SKILL.md +318 -0
  178. package/skills/cm-skill-mastery/SKILL.md +169 -0
  179. package/skills/cm-start/SKILL.md +65 -0
  180. package/skills/cm-status/SKILL.md +12 -0
  181. package/skills/cm-tdd/SKILL.md +370 -0
  182. package/skills/cm-terminal/SKILL.md +177 -0
  183. package/skills/cm-test-gate/SKILL.md +242 -0
  184. package/skills/cm-ui-preview/SKILL.md +291 -0
  185. package/skills/cm-ux-master/DESIGN_STANDARD_TEMPLATE.md +54 -0
  186. package/skills/cm-ux-master/SKILL.md +114 -0
  187. package/skills/cro-methodology/SKILL.md +98 -0
  188. package/skills/cro-methodology/references/COPYWRITING.md +178 -0
  189. package/skills/cro-methodology/references/OBJECTIONS.md +135 -0
  190. package/skills/cro-methodology/references/PERSUASION.md +158 -0
  191. package/skills/cro-methodology/references/RESEARCH.md +220 -0
  192. package/skills/cro-methodology/references/funnel-analysis.md +365 -0
  193. package/skills/cro-methodology/references/testing-methodology.md +330 -0
@@ -0,0 +1,132 @@
1
+ {
2
+ "version": "2.0",
3
+ "started_at": "2026-03-03T02:45:17.451741",
4
+ "updated_at": "2026-03-03T02:45:17.455271",
5
+ "status": "running",
6
+ "pipeline": {
7
+ "current_phase": "write",
8
+ "phases": {
9
+ "extract": {
10
+ "status": "done",
11
+ "progress": 1.0,
12
+ "started_at": null,
13
+ "finished_at": "2026-03-03T02:45:17.452336"
14
+ },
15
+ "plan": {
16
+ "status": "done",
17
+ "progress": 1.0,
18
+ "started_at": null,
19
+ "finished_at": "2026-03-03T02:45:17.452685"
20
+ },
21
+ "write": {
22
+ "status": "running",
23
+ "progress": 0.6,
24
+ "started_at": "2026-03-03T02:45:17.452944",
25
+ "finished_at": null
26
+ },
27
+ "audit": {
28
+ "status": "pending",
29
+ "progress": 0,
30
+ "started_at": null,
31
+ "finished_at": null
32
+ },
33
+ "seo": {
34
+ "status": "pending",
35
+ "progress": 0,
36
+ "started_at": null,
37
+ "finished_at": null
38
+ },
39
+ "publish": {
40
+ "status": "pending",
41
+ "progress": 0,
42
+ "started_at": null,
43
+ "finished_at": null
44
+ }
45
+ }
46
+ },
47
+ "tasks": [
48
+ {
49
+ "id": "write-seo-tips",
50
+ "status": "running",
51
+ "created_at": "2026-03-03T02:45:17.453172",
52
+ "updated_at": "2026-03-03T02:45:17.453172",
53
+ "meta": {
54
+ "topic": "SEO Tips 2025"
55
+ }
56
+ },
57
+ {
58
+ "id": "write-content-strategy",
59
+ "status": "done",
60
+ "created_at": "2026-03-03T02:45:17.453373",
61
+ "updated_at": "2026-03-03T02:45:17.453373",
62
+ "meta": {
63
+ "topic": "Content Strategy"
64
+ }
65
+ },
66
+ {
67
+ "id": "write-ai-marketing",
68
+ "status": "queued",
69
+ "created_at": "2026-03-03T02:45:17.453562",
70
+ "updated_at": "2026-03-03T02:45:17.453562",
71
+ "meta": {
72
+ "topic": "AI Marketing"
73
+ }
74
+ },
75
+ {
76
+ "id": "write-social-media",
77
+ "status": "failed",
78
+ "created_at": "2026-03-03T02:45:17.453769",
79
+ "updated_at": "2026-03-03T02:45:17.453769",
80
+ "meta": {
81
+ "topic": "Social Media"
82
+ }
83
+ }
84
+ ],
85
+ "tokens": {
86
+ "total_input": 57000,
87
+ "total_output": 30000,
88
+ "total_cost_usd": 0.1759,
89
+ "budget_limit_usd": 5.0,
90
+ "providers": {
91
+ "gemini": {
92
+ "input": 45000,
93
+ "output": 22000,
94
+ "cost_usd": 0.0199,
95
+ "requests": 1
96
+ },
97
+ "claude-sonnet": {
98
+ "input": 12000,
99
+ "output": 8000,
100
+ "cost_usd": 0.156,
101
+ "requests": 1
102
+ }
103
+ }
104
+ },
105
+ "errors": [
106
+ {
107
+ "source": "write",
108
+ "message": "API rate limit exceeded on request #45",
109
+ "timestamp": "2026-03-03T02:45:17.455270"
110
+ }
111
+ ],
112
+ "stats": {
113
+ "articles_total": 50,
114
+ "articles_written": 32,
115
+ "articles_passed_audit": 28,
116
+ "articles_failed": 2
117
+ },
118
+ "agents": [
119
+ {
120
+ "id": "gemini-cli-1",
121
+ "type": "gemini",
122
+ "registered_at": "2026-03-03T02:45:17.454842",
123
+ "last_seen": "2026-03-03T02:45:17.454842"
124
+ },
125
+ {
126
+ "id": "claude-1",
127
+ "type": "claude",
128
+ "registered_at": "2026-03-03T02:45:17.455059",
129
+ "last_seen": "2026-03-03T02:45:17.455059"
130
+ }
131
+ ]
132
+ }
@@ -0,0 +1 @@
1
+ 0000000000000000000000000000000000000000 88b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d Tody Le <todyle@192.168.1.126.non-exists.ptr.local> 1772335261 +0700 commit (initial): Initial commit
@@ -0,0 +1 @@
1
+ 0000000000000000000000000000000000000000 88b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d Tody Le <todyle@192.168.1.126.non-exists.ptr.local> 1772335285 +0700 update by push
@@ -0,0 +1,5 @@
1
+ x�Wmk7���
2
+ �B>���$�/%&vkHK�]J)a�i�����Z��|���fwo��-N��og4zf�yە�+�������`�p������6��V)�W�|�)QީwGDM'~�v{- �X�'H�k[ ��
3
+ �3!o�dgt [[Ǯ@h�Ϸ:��l��̯�.�n
4
+ �,ԍ��r>���6J�zd�;+����.�Gp��J���Au$�nH� �DÕ���U�` 5�Υ�kpR =�ZT�X ���z�er{��3����6�4�����m�B��A�yU�ʡJ�sݍO�ȈP�]�5��r0�V��b��- ��ၽd�h���� �����!�ŀ�(����+k�M�x� ��U��!���dģ�c��6(Ϧd��]u���7� ��T���M`�O]�/�:"��`�x���#����o�E����5��.}8����J��o�Sަ�y��?�XY��{�Ap3������1�.=L��9?�8��0b�D|s�o��#���`�D�^?"p>;��� �6�nt�@�sd��i���r+8:(n8@co��o�����;V��� �M+D7�8�d~@g��ij�Y{���2�v�`���-<.\����O��U8]f�a�� F�u[ͽ/�K���9�~����L0S>Z:��bnDs${��"��n�ր3�=.g�͍��LJǞu�ъ�Zi�>)s;i\� IF;�ZWҶ��M�_����0x-Pprzt�Ujs���N/����]o����
5
+ h�f�[ 2��&v�#Y.���zt8 d��;��:M�f ��4 ��,(��q�K�%$�l6�� E_.�I��NB0�38Kv����k�|���YZ%
@@ -0,0 +1 @@
1
+ 88b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d
@@ -0,0 +1 @@
1
+ 88b89dd609a0a03f8d4fe8bfde20d5b8fc1d326d
@@ -0,0 +1,76 @@
1
+ [
2
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_claim_by_type",
3
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_claim_empty_queue_returns_none",
4
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_claim_next",
5
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_complete",
6
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_enqueue",
7
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_enqueue_batch",
8
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_fail_exceeds_max_retries",
9
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_fail_with_retry",
10
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_no_duplicate_enqueue",
11
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_priority_ordering",
12
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_queue_summary",
13
+ "tests/test_agent_dispatcher.py::TestAgentDispatcher::test_reset",
14
+ "tests/test_memory.py::TestMemoryEngineInit::test_creates_directory_structure",
15
+ "tests/test_memory.py::TestMemoryEngineInit::test_creates_semantic_files",
16
+ "tests/test_memory.py::TestMemoryEngineInit::test_creates_working_session",
17
+ "tests/test_memory.py::TestSessionLifecycle::test_start_session_creates_working_file",
18
+ "tests/test_memory.py::TestSessionLifecycle::test_start_session_returns_id",
19
+ "tests/test_memory.py::TestWritingContext::test_context_includes_added_patterns",
20
+ "tests/test_memory.py::TestWritingContext::test_empty_context_returns_structure",
21
+ "tests/test_memory.py::TestWritingPatterns::test_add_new_pattern",
22
+ "tests/test_memory.py::TestWritingPatterns::test_update_existing_pattern_increases_confidence",
23
+ "tests/test_pipeline.py::TestFireHooks::test_empty_hooks_returns_silently",
24
+ "tests/test_pipeline.py::TestFireHooks::test_no_hooks_returns_silently",
25
+ "tests/test_pipeline.py::TestFireHooks::test_nonexistent_hook_name_returns_silently",
26
+ "tests/test_pipeline.py::TestLoadConfig::test_load_missing_config_exits",
27
+ "tests/test_pipeline.py::TestLoadConfig::test_load_valid_config",
28
+ "tests/test_pipeline.py::TestValidateConfig::test_empty_config_fails",
29
+ "tests/test_pipeline.py::TestValidateConfig::test_missing_brand_name_fails",
30
+ "tests/test_pipeline.py::TestValidateConfig::test_missing_content_article_types_fails",
31
+ "tests/test_pipeline.py::TestValidateConfig::test_missing_niche_fails",
32
+ "tests/test_pipeline.py::TestValidateConfig::test_missing_output_content_dir_fails",
33
+ "tests/test_pipeline.py::TestValidateConfig::test_missing_sources_type_fails",
34
+ "tests/test_pipeline.py::TestValidateConfig::test_valid_config_passes",
35
+ "tests/test_research.py::TestGenerateQueries::test_queries_contain_niche",
36
+ "tests/test_research.py::TestGenerateQueries::test_queries_contain_topic",
37
+ "tests/test_research.py::TestGenerateQueries::test_returns_list",
38
+ "tests/test_research.py::TestResearchEngineInit::test_loads_config",
39
+ "tests/test_research.py::TestResearchEngineInit::test_sets_project_root",
40
+ "tests/test_state_manager.py::TestStateManager::test_add_error",
41
+ "tests/test_state_manager.py::TestStateManager::test_add_task",
42
+ "tests/test_state_manager.py::TestStateManager::test_budget_check",
43
+ "tests/test_state_manager.py::TestStateManager::test_default_state",
44
+ "tests/test_state_manager.py::TestStateManager::test_event_logging",
45
+ "tests/test_state_manager.py::TestStateManager::test_get_snapshot",
46
+ "tests/test_state_manager.py::TestStateManager::test_overall_status_completed",
47
+ "tests/test_state_manager.py::TestStateManager::test_overall_status_error",
48
+ "tests/test_state_manager.py::TestStateManager::test_phase_lifecycle",
49
+ "tests/test_state_manager.py::TestStateManager::test_reset",
50
+ "tests/test_state_manager.py::TestStateManager::test_save_and_load",
51
+ "tests/test_state_manager.py::TestStateManager::test_update_existing_task",
52
+ "tests/test_state_manager.py::TestStateManager::test_update_tokens",
53
+ "tests/test_token_manager.py::TestTokenManager::test_backoff_seconds",
54
+ "tests/test_token_manager.py::TestTokenManager::test_budget_exceeded",
55
+ "tests/test_token_manager.py::TestTokenManager::test_budget_status",
56
+ "tests/test_token_manager.py::TestTokenManager::test_budget_within",
57
+ "tests/test_token_manager.py::TestTokenManager::test_circuit_breaker_closed",
58
+ "tests/test_token_manager.py::TestTokenManager::test_circuit_breaker_opens",
59
+ "tests/test_token_manager.py::TestTokenManager::test_circuit_breaker_resets_on_success",
60
+ "tests/test_token_manager.py::TestTokenManager::test_estimate_cost_gemini",
61
+ "tests/test_token_manager.py::TestTokenManager::test_estimate_cost_unknown_provider",
62
+ "tests/test_token_manager.py::TestTokenManager::test_failure_tracking",
63
+ "tests/test_token_manager.py::TestTokenManager::test_multiple_providers",
64
+ "tests/test_token_manager.py::TestTokenManager::test_record_usage",
65
+ "tests/test_token_manager.py::TestTokenManager::test_reset",
66
+ "tests/test_wizard.py::TestGenerateConfig::test_config_from_template",
67
+ "tests/test_wizard.py::TestGenerateConfig::test_config_has_memory_section",
68
+ "tests/test_wizard.py::TestGenerateConfig::test_config_has_scoring_section",
69
+ "tests/test_wizard.py::TestGenerateConfig::test_generates_valid_config",
70
+ "tests/test_wizard.py::TestSlugify::test_already_slug",
71
+ "tests/test_wizard.py::TestSlugify::test_basic_slug",
72
+ "tests/test_wizard.py::TestSlugify::test_empty_string",
73
+ "tests/test_wizard.py::TestSlugify::test_leading_trailing_special",
74
+ "tests/test_wizard.py::TestSlugify::test_special_characters",
75
+ "tests/test_wizard.py::TestSlugify::test_unicode_text"
76
+ ]
@@ -0,0 +1,123 @@
1
+ # CodyMaster Shared Helpers
2
+
3
+ > **DRY principle for skills.** Reference sections here instead of embedding in every skill.
4
+ > Usage: `Per helpers.md#Section-Name` — reduces ~150-200 tokens per skill.
5
+
6
+ ---
7
+
8
+ ## #Load-Working-Memory
9
+
10
+ Before executing any significant action, ALWAYS:
11
+
12
+ 1. **Read** `.cm/CONTINUITY.md` → understand current state, Active Goal, Next Actions
13
+ 2. **Run Memory Audit** — decay check + conflict detection + integrity scan (see `cm-continuity`)
14
+ 3. **Scope-filter learnings** — if working on module X:
15
+ - Load from `.cm/learnings.json` ONLY where `scope == "global"` or `scope == "module:X"`
16
+ - **NEVER** load `status = "invalidated"` (proven wrong — skip entirely)
17
+ - **CAUTION** with `status = "corrected"` (was wrong, verify before applying)
18
+ - **TRUST** high `reinforceCount` + recent `lastRelevant`
19
+ - **VERIFY** `reinforceCount = 0` + old `lastRelevant` (low confidence)
20
+ - SKIP learnings for other modules (reduces noise + saves tokens)
21
+ 4. **Check** "Next Actions" — pick up where you left off
22
+
23
+ > **Token savings:** Scope-filtered reading loads ~250 tokens instead of ~2,500.
24
+
25
+ ---
26
+
27
+ ## #Save-Decision
28
+
29
+ After making any significant architectural or product decision:
30
+
31
+ 1. Write to `.cm/memory/decisions.json`:
32
+ - `id`: Auto-increment (D001, D002, ...)
33
+ - `decision`: What was decided
34
+ - `rationale`: Why this option won over alternatives
35
+ - `scope`: `module:{name}` or `global`
36
+ - `status`: `active`
37
+ - `date`: ISO date
38
+ 2. Check for conflicts with existing decisions in same scope
39
+ - If conflict → set older decision `supersededBy` = new ID, `status` = `superseded`
40
+
41
+ ---
42
+
43
+ ## #Update-Continuity
44
+
45
+ At the end of every work session or task completion:
46
+
47
+ 1. Update `.cm/CONTINUITY.md`:
48
+ - Move completed work to "Just Completed"
49
+ - Update "Next Actions" with remaining items
50
+ - Update "Files Currently Being Modified"
51
+ - Set `currentPhase` and timestamp
52
+ 2. Record any new learnings in `.cm/memory/learnings.json`
53
+ - If similar learning exists → reinforce (`reinforceCount++`) instead of creating duplicate
54
+ 3. Record any new decisions via `#Save-Decision`
55
+
56
+ ---
57
+
58
+ ## #Identity-Check
59
+
60
+ Before any `git push`, `deploy`, or database operation:
61
+
62
+ 1. Read `.project-identity.json` for expected accounts
63
+ 2. Verify current git config matches expected GitHub org
64
+ 3. Verify Cloudflare account matches expected account ID
65
+ 4. If mismatch → **STOP** and alert user
66
+
67
+ > See `cm-identity-guard` for full verification protocol.
68
+
69
+ ---
70
+
71
+ ## #Project-Level-Detection
72
+
73
+ Assess task complexity to determine the right workflow depth:
74
+
75
+ ```
76
+ ┌─────────┬───────────────────────┬────────────────────────────────────────┐
77
+ │ Level │ Criteria │ Workflow │
78
+ ├─────────┼───────────────────────┼────────────────────────────────────────┤
79
+ │ L0 │ < 30 min, 1-2 files │ Code + Test only (skip planning) │
80
+ │ Micro │ Bug fix, tiny tweak │ Chain: tdd → quality-gate │
81
+ ├─────────┼───────────────────────┼────────────────────────────────────────┤
82
+ │ L1 │ 1-3 tasks, 1 area │ Planning lite → Code → Deploy │
83
+ │ Small │ Small feature, config │ Chain: planning → tdd → quality-gate │
84
+ ├─────────┼───────────────────────┼────────────────────────────────────────┤
85
+ │ L2 │ 4-10 tasks, multiple │ Full flow with analysis │
86
+ │ Medium │ areas, UI + backend │ Chain: brainstorm → planning → tdd → │
87
+ │ │ │ execution → quality-gate → safe-deploy │
88
+ ├─────────┼───────────────────────┼────────────────────────────────────────┤
89
+ │ L3 │ 10+ tasks, cross- │ Full + PRD + Architecture + Sprint │
90
+ │ Large │ system, team impact │ Chain: brainstorm → planning (with │
91
+ │ │ │ FR/NFR) → sprint → execution → gate → │
92
+ │ │ │ deploy │
93
+ └─────────┴───────────────────────┴────────────────────────────────────────┘
94
+ ```
95
+
96
+ **Detection heuristics:**
97
+ - Count estimated tasks from objective description
98
+ - Check number of files/modules likely affected
99
+ - Check if UI + API + DB changes needed (cross-layer = L2+)
100
+ - Check if multiple team members involved (L3)
101
+
102
+ **Output:** State the detected level and recommended chain to the user:
103
+ ```
104
+ 📊 Project Level: L1 (Small)
105
+ 🔗 Recommended chain: planning → tdd → quality-gate
106
+ ⏱️ Estimated time: 1-2 hours
107
+ ```
108
+
109
+ ---
110
+
111
+ ## #Outputs-Convention
112
+
113
+ All skill outputs should be saved in `.cm/outputs/` with this structure:
114
+
115
+ ```
116
+ .cm/outputs/
117
+ ├── brainstorms/ ← cm-brainstorm-idea output
118
+ ├── plans/ ← cm-planning implementation plans
119
+ ├── reviews/ ← cm-code-review output
120
+ └── deploys/ ← cm-safe-deploy logs and reports
121
+ ```
122
+
123
+ **Naming:** `{date}-{slug}.md` (e.g., `2026-03-23-user-auth-plan.md`)
@@ -0,0 +1,24 @@
1
+ # CodyMaster Output Convention
2
+
3
+ All skill outputs should be saved in `.cm/outputs/` for consistency.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ .cm/outputs/
9
+ ├── brainstorms/ ← cm-brainstorm-idea output
10
+ ├── plans/ ← cm-planning implementation plans
11
+ ├── reviews/ ← cm-code-review output
12
+ └── deploys/ ← cm-safe-deploy logs and reports
13
+ ```
14
+
15
+ ## Naming
16
+
17
+ `{date}-{slug}.md` — e.g., `2026-03-23-user-auth-plan.md`
18
+
19
+ ## Rules
20
+
21
+ - If `.cm/outputs/` doesn't exist, create it automatically
22
+ - Always use slug-case for filenames
23
+ - Brainstorm outputs go in `brainstorms/`, not project root
24
+ - Deploy logs go in `deploys/`, not terminal-only
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: cm-ads-tracker
3
+ description: |
4
+ Expert CRO conversion tracking strategist. From a single chat message, generates a COMPLETE tracking setup: Facebook/Meta Pixel + CAPI, TikTok Pixel + Events API, Google Ads Enhanced Conversions, GTM container architecture, first-touch/last-touch attribution, and cross-channel deduplication.
5
+
6
+ AUTO-DETECTS industry and maps correct standard events per platform specs. Outputs a full implementation document developers can use immediately.
7
+
8
+ ALWAYS trigger for: pixel, tracking, GTM, Facebook pixel, Meta pixel, CAPI, TikTok pixel, Google Ads conversion, UTM, attribution, "setup tracking", "measure conversions", "measure ROAS".
9
+ ---
10
+
11
+ # CM Ads Tracker v2
12
+
13
+ You are the world's best conversion tracking architect. From a single chat message, produce a complete, platform-specific, attribution-aware tracking setup.
14
+
15
+ ## Phase 1: Express Onboarding (5 Questions, One Message)
16
+
17
+ 1. **Industry** — E-commerce? Lead gen? SaaS? Online courses? F&B? Travel?
18
+ 2. **Ad platforms** — Facebook/Meta? TikTok? Google? Other?
19
+ 3. **Tracking IDs** — FB Pixel ID, TikTok Pixel ID, Google Ads Conversion ID+Label, GTM Container ID, GA4 ID
20
+ 4. **Website platform** — Shopify? WooCommerce? Custom? Next.js? Webflow?
21
+ 5. **Primary conversions** — 2-3 most important actions (purchase, form, call, signup...)
22
+
23
+ ## Phase 2: Industry Event Taxonomy
24
+
25
+ | Industry | Priority Events (highest → lowest) |
26
+ |----------|----------------------------------|
27
+ | E-commerce | Purchase > InitiateCheckout > AddToCart > ViewContent |
28
+ | Lead Gen | Lead/SubmitForm > Contact > ViewContent |
29
+ | Education | Purchase > CompleteRegistration > InitiateCheckout > ViewContent |
30
+ | SaaS/App | CompleteRegistration > Purchase > ViewContent (pricing) |
31
+ | F&B | Contact (reservation) > SubmitForm > ViewContent (menu) |
32
+ | Travel | Purchase > InitiateCheckout > Search > ViewContent |
33
+
34
+ See `references/industry-events.md` for full event library with parameters.
35
+
36
+ ## Phase 3: GTM Architecture — DataLayer-First
37
+
38
+ **Principle:** Website → `dataLayer.push()` → GTM → broadcasts to ALL platforms simultaneously.
39
+
40
+ Developer writes ONE push per event. Adding a new platform = zero website code changes.
41
+
42
+ **Standard GTM Variables:** DL-event_id, DL-order_id, DL-order_value, DL-currency, DL-content_ids, DL-content_type, DL-email_hashed (SHA256), DL-phone_hashed (SHA256), FTC cookies (source/medium/campaign), URL params (utm_*, fbclid, ttclid, gclid).
43
+
44
+ See `references/gtm-architecture.md` for full container build specs.
45
+
46
+ ## Phase 4: Platform Implementation
47
+
48
+ ### Facebook/Meta (Pixel + CAPI)
49
+ Key events: Purchase, AddToCart, InitiateCheckout, ViewContent, Lead, CompleteRegistration, Search, Contact, Subscribe.
50
+ Enhanced Matching: SHA256(lowercase email), SHA256(digits-only phone). CAPI dedup via same event_id (48h window).
51
+
52
+ ### TikTok (Pixel + Events API)
53
+ 14 standard events. Note TikTok-specific names: `CompletePayment` (purchase), `ClickButton`, `PlaceAnOrder`. Pass contents array. Dedup via event_id.
54
+
55
+ ### Google Ads (Enhanced Conversions)
56
+ Pass transaction_id, enable Enhanced Conversions (adds 15-25% recovery), pass hashed email/phone via user_data object.
57
+
58
+ ## Phase 5: Attribution
59
+
60
+ **First-Touch:** GTM captures UTM/click IDs into `_ftc` cookie (90-day, write-once). Passes to all conversions.
61
+ **Last-Touch:** Platform native via click IDs (fbp/fbc, ttclid, gclid).
62
+ **Dedup:** Unique event_id per conversion → all platforms. Order ID as reference. GA4 as neutral source of truth. Check inflation rate: total platform conversions / actual orders.
63
+
64
+ ## Phase 6: DataLayer Push Specs
65
+
66
+ Standard event names: `cro_purchase`, `cro_lead`, `cro_view_content`, `cro_add_to_cart`, `cro_initiate_checkout`, `cro_add_payment_info`, `cro_registration`, `cro_phone_call`, `cro_search`, `cro_click_button`.
67
+
68
+ Key fields: event, event_id (UUID), transaction_id, value (numeric!), currency, content_ids, content_type, email_hashed, phone_hashed.
69
+
70
+ ## Phase 7: UTM Convention
71
+
72
+ Rules: always lowercase, hyphens not underscores. Format: `[product]-[audience]-[YYYYMM]`.
73
+
74
+ | Platform | utm_source | utm_medium |
75
+ |----------|-----------|-----------|
76
+ | Facebook | facebook | paid-social |
77
+ | TikTok | tiktok | paid-social |
78
+ | Google Search | google | paid-search |
79
+ | Google Shopping | google | paid-shopping |
80
+ | Google Display | google | paid-display |
81
+
82
+ ## Implementation Checklist
83
+
84
+ 1. **GTM Foundation** (2h): Install snippets, create variables, first-touch cookie tag
85
+ 2. **Base Pixels** (1h): FB/TikTok/Google/GA4 base tags on All Pages
86
+ 3. **DataLayer Pushes** (2-4h): Developer implements per conversion event
87
+ 4. **Conversion Tags** (2h): Per event × per platform in GTM
88
+ 5. **Enhanced Signals** (1-2h): Google Enhanced Conversions, Meta CAPI, TikTok Events API
89
+ 6. **QA** (2h): Verify in platform managers, check dedup, confirm UTMs in GA4
90
+
91
+ ## Common Anti-Patterns
92
+
93
+ - Pixel re-fires Purchase from base tag → Use GTM trigger exceptions
94
+ - Missing event_id → CAPI double-counts → Generate ONE UUID, send to both
95
+ - UTM lost on redirect → Capture into _ftc cookie on first page load
96
+ - value as string → breaks revenue → Always parseFloat()
97
+ - No hashed email/phone → CAPI match drops → Hash and pass on every conversion
98
+
99
+ ## Template Files (load on-demand with view_file)
100
+
101
+ | Template | Use When |
102
+ |----------|----------|
103
+ | `templates/datalayer-push.js` | Phase 6: Providing exact dataLayer.push() code to developers |
104
+ | `templates/gtm-variables.js` | Phase 3: GTM variable config + first-touch cookie script |
105
+ | `templates/capi-payload.md` | Phase 4: Facebook CAPI and TikTok Events API payload specs |
106
+
107
+ ## Output
108
+
109
+ Save as `tracking-strategy-[brand]-[YYYYMMDD].md`. Must be implementable without follow-up questions.