twinclaw 1.0.3 → 1.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 (468) hide show
  1. package/.env.example +71 -0
  2. package/.githooks/pre-commit +5 -0
  3. package/.github/copilot-instructions.md +170 -0
  4. package/.github/skills/find-skills/SKILL.md +133 -0
  5. package/.github/skills/frontend-design/LICENSE.txt +177 -0
  6. package/.github/skills/frontend-design/SKILL.md +94 -0
  7. package/.github/skills/humanist-web-style/SKILL.md +170 -0
  8. package/.github/workflows/main.yml +137 -0
  9. package/.skills/frontend-design/frontend-design.md +94 -0
  10. package/.vscode/settings.json +7 -0
  11. package/Dockerfile +19 -0
  12. package/README.md +67 -64
  13. package/bootstrap.ps1 +31 -0
  14. package/conductor/AGENT_GUIDE.md +27 -0
  15. package/conductor/CONSISTENCY_CHECK.md +143 -0
  16. package/conductor/archive/api_health_hard_gate_20260221/index.md +7 -0
  17. package/conductor/archive/api_health_hard_gate_20260221/metadata.json +10 -0
  18. package/conductor/archive/api_health_hard_gate_20260221/plan.md +13 -0
  19. package/conductor/archive/api_health_hard_gate_20260221/spec.md +13 -0
  20. package/conductor/archive/browser_ref_mapping_20260220/metadata.json +8 -0
  21. package/conductor/archive/browser_ref_mapping_20260220/plan.md +28 -0
  22. package/conductor/archive/browser_ref_mapping_20260220/spec.md +23 -0
  23. package/conductor/archive/browser_skills_20260220/index.md +5 -0
  24. package/conductor/archive/browser_skills_20260220/metadata.json +8 -0
  25. package/conductor/archive/browser_skills_20260220/plan.md +25 -0
  26. package/conductor/archive/browser_skills_20260220/spec.md +15 -0
  27. package/conductor/archive/build_contract_recovery_20260220/index.md +5 -0
  28. package/conductor/archive/build_contract_recovery_20260220/metadata.json +8 -0
  29. package/conductor/archive/build_contract_recovery_20260220/plan.md +28 -0
  30. package/conductor/archive/build_contract_recovery_20260220/spec.md +16 -0
  31. package/conductor/archive/channels_login_doctor_20260221/index.md +5 -0
  32. package/conductor/archive/channels_login_doctor_20260221/metadata.json +8 -0
  33. package/conductor/archive/channels_login_doctor_20260221/plan.md +28 -0
  34. package/conductor/archive/channels_login_doctor_20260221/spec.md +17 -0
  35. package/conductor/archive/ci_release_gate_enforcement_20260221/index.md +7 -0
  36. package/conductor/archive/ci_release_gate_enforcement_20260221/metadata.json +10 -0
  37. package/conductor/archive/ci_release_gate_enforcement_20260221/plan.md +17 -0
  38. package/conductor/archive/ci_release_gate_enforcement_20260221/spec.md +13 -0
  39. package/conductor/archive/cli_hardening_onboarding_20260220/metadata.json +8 -0
  40. package/conductor/archive/cli_hardening_onboarding_20260220/plan.md +29 -0
  41. package/conductor/archive/cli_hardening_onboarding_20260220/spec.md +17 -0
  42. package/conductor/archive/config_env_validation_20260220/index.md +5 -0
  43. package/conductor/archive/config_env_validation_20260220/metadata.json +8 -0
  44. package/conductor/archive/config_env_validation_20260220/plan.md +28 -0
  45. package/conductor/archive/config_env_validation_20260220/spec.md +16 -0
  46. package/conductor/archive/config_json_foundation_20260221/index.md +5 -0
  47. package/conductor/archive/config_json_foundation_20260221/metadata.json +8 -0
  48. package/conductor/archive/config_json_foundation_20260221/plan.md +28 -0
  49. package/conductor/archive/config_json_foundation_20260221/spec.md +17 -0
  50. package/conductor/archive/context_budgeting_memory_lifecycle_20260220/metadata.json +8 -0
  51. package/conductor/archive/context_budgeting_memory_lifecycle_20260220/plan.md +28 -0
  52. package/conductor/archive/context_budgeting_memory_lifecycle_20260220/spec.md +17 -0
  53. package/conductor/archive/control_plane_api_endpoints_20260220/metadata.json +8 -0
  54. package/conductor/archive/control_plane_api_endpoints_20260220/plan.md +28 -0
  55. package/conductor/archive/control_plane_api_endpoints_20260220/spec.md +17 -0
  56. package/conductor/archive/control_plane_observability_20260220/metadata.json +8 -0
  57. package/conductor/archive/control_plane_observability_20260220/plan.md +28 -0
  58. package/conductor/archive/control_plane_observability_20260220/spec.md +17 -0
  59. package/conductor/archive/control_plane_websocket_streaming_20260220/metadata.json +8 -0
  60. package/conductor/archive/control_plane_websocket_streaming_20260220/plan.md +28 -0
  61. package/conductor/archive/control_plane_websocket_streaming_20260220/spec.md +18 -0
  62. package/conductor/archive/core_persona_20260220/index.md +5 -0
  63. package/conductor/archive/core_persona_20260220/metadata.json +8 -0
  64. package/conductor/archive/core_persona_20260220/plan.md +30 -0
  65. package/conductor/archive/core_persona_20260220/spec.md +15 -0
  66. package/conductor/archive/coverage_gap_expansion_20260220/index.md +5 -0
  67. package/conductor/archive/coverage_gap_expansion_20260220/metadata.json +8 -0
  68. package/conductor/archive/coverage_gap_expansion_20260220/plan.md +28 -0
  69. package/conductor/archive/coverage_gap_expansion_20260220/spec.md +16 -0
  70. package/conductor/archive/cross_session_reasoning_graph_20260220/metadata.json +8 -0
  71. package/conductor/archive/cross_session_reasoning_graph_20260220/plan.md +30 -0
  72. package/conductor/archive/cross_session_reasoning_graph_20260220/spec.md +17 -0
  73. package/conductor/archive/delegation_dag_runtime_20260220/metadata.json +8 -0
  74. package/conductor/archive/delegation_dag_runtime_20260220/plan.md +29 -0
  75. package/conductor/archive/delegation_dag_runtime_20260220/spec.md +17 -0
  76. package/conductor/archive/delivery_queue_deadletter_20260220/metadata.json +8 -0
  77. package/conductor/archive/delivery_queue_deadletter_20260220/plan.md +28 -0
  78. package/conductor/archive/delivery_queue_deadletter_20260220/spec.md +17 -0
  79. package/conductor/archive/dm_pairing_policy_20260221/index.md +5 -0
  80. package/conductor/archive/dm_pairing_policy_20260221/metadata.json +8 -0
  81. package/conductor/archive/dm_pairing_policy_20260221/plan.md +28 -0
  82. package/conductor/archive/dm_pairing_policy_20260221/spec.md +17 -0
  83. package/conductor/archive/docs_agent_plan_migration_20260221/index.md +5 -0
  84. package/conductor/archive/docs_agent_plan_migration_20260221/metadata.json +8 -0
  85. package/conductor/archive/docs_agent_plan_migration_20260221/plan.md +28 -0
  86. package/conductor/archive/docs_agent_plan_migration_20260221/spec.md +16 -0
  87. package/conductor/archive/docs_prd_blueprint_migration_20260221/index.md +5 -0
  88. package/conductor/archive/docs_prd_blueprint_migration_20260221/metadata.json +8 -0
  89. package/conductor/archive/docs_prd_blueprint_migration_20260221/plan.md +28 -0
  90. package/conductor/archive/docs_prd_blueprint_migration_20260221/spec.md +16 -0
  91. package/conductor/archive/docs_track_state_reconciliation_20260221/index.md +7 -0
  92. package/conductor/archive/docs_track_state_reconciliation_20260221/metadata.json +10 -0
  93. package/conductor/archive/docs_track_state_reconciliation_20260221/plan.md +19 -0
  94. package/conductor/archive/docs_track_state_reconciliation_20260221/spec.md +13 -0
  95. package/conductor/archive/gateway_control_plane_20260220/metadata.json +8 -0
  96. package/conductor/archive/gateway_control_plane_20260220/plan.md +20 -0
  97. package/conductor/archive/gateway_control_plane_20260220/spec.md +16 -0
  98. package/conductor/archive/gateway_supervision_remote_access_20260221/index.md +5 -0
  99. package/conductor/archive/gateway_supervision_remote_access_20260221/metadata.json +8 -0
  100. package/conductor/archive/gateway_supervision_remote_access_20260221/plan.md +25 -0
  101. package/conductor/archive/gateway_supervision_remote_access_20260221/spec.md +17 -0
  102. package/conductor/archive/groq_tts_migration_20260220/index.md +5 -0
  103. package/conductor/archive/groq_tts_migration_20260220/metadata.json +8 -0
  104. package/conductor/archive/groq_tts_migration_20260220/plan.md +28 -0
  105. package/conductor/archive/groq_tts_migration_20260220/spec.md +16 -0
  106. package/conductor/archive/gui_runtime_dashboard_20260220/metadata.json +8 -0
  107. package/conductor/archive/gui_runtime_dashboard_20260220/plan.md +28 -0
  108. package/conductor/archive/gui_runtime_dashboard_20260220/spec.md +17 -0
  109. package/conductor/archive/identity_bootstrap_compliance_20260221/index.md +7 -0
  110. package/conductor/archive/identity_bootstrap_compliance_20260221/metadata.json +10 -0
  111. package/conductor/archive/identity_bootstrap_compliance_20260221/plan.md +17 -0
  112. package/conductor/archive/identity_bootstrap_compliance_20260221/spec.md +13 -0
  113. package/conductor/archive/incident_self_healing_20260220/metadata.json +8 -0
  114. package/conductor/archive/incident_self_healing_20260220/plan.md +28 -0
  115. package/conductor/archive/incident_self_healing_20260220/spec.md +17 -0
  116. package/conductor/archive/install_bootstrap_fastpath_20260220/index.md +5 -0
  117. package/conductor/archive/install_bootstrap_fastpath_20260220/metadata.json +8 -0
  118. package/conductor/archive/install_bootstrap_fastpath_20260220/plan.md +28 -0
  119. package/conductor/archive/install_bootstrap_fastpath_20260220/spec.md +16 -0
  120. package/conductor/archive/interface_reliability_pipeline_20260220/metadata.json +8 -0
  121. package/conductor/archive/interface_reliability_pipeline_20260220/plan.md +28 -0
  122. package/conductor/archive/interface_reliability_pipeline_20260220/spec.md +16 -0
  123. package/conductor/archive/local_state_backup_recovery_20260220/metadata.json +8 -0
  124. package/conductor/archive/local_state_backup_recovery_20260220/plan.md +28 -0
  125. package/conductor/archive/local_state_backup_recovery_20260220/spec.md +17 -0
  126. package/conductor/archive/mcp_runtime_sandboxing_20260220/metadata.json +8 -0
  127. package/conductor/archive/mcp_runtime_sandboxing_20260220/plan.md +28 -0
  128. package/conductor/archive/mcp_runtime_sandboxing_20260220/spec.md +17 -0
  129. package/conductor/archive/mcp_skill_registry_20260220/metadata.json +8 -0
  130. package/conductor/archive/mcp_skill_registry_20260220/plan.md +19 -0
  131. package/conductor/archive/mcp_skill_registry_20260220/spec.md +15 -0
  132. package/conductor/archive/message_streaming_chunking_20260221/index.md +4 -0
  133. package/conductor/archive/message_streaming_chunking_20260221/plan.md +26 -0
  134. package/conductor/archive/message_streaming_chunking_20260221/spec.md +14 -0
  135. package/conductor/archive/messaging_voice_20260220/index.md +5 -0
  136. package/conductor/archive/messaging_voice_20260220/metadata.json +8 -0
  137. package/conductor/archive/messaging_voice_20260220/plan.md +25 -0
  138. package/conductor/archive/messaging_voice_20260220/spec.md +15 -0
  139. package/conductor/archive/model_telemetry_fallback_controls_20260220/index.md +5 -0
  140. package/conductor/archive/model_telemetry_fallback_controls_20260220/metadata.json +8 -0
  141. package/conductor/archive/model_telemetry_fallback_controls_20260220/plan.md +34 -0
  142. package/conductor/archive/model_telemetry_fallback_controls_20260220/spec.md +22 -0
  143. package/conductor/archive/multi_agent_orchestration_20260220/metadata.json +8 -0
  144. package/conductor/archive/multi_agent_orchestration_20260220/plan.md +28 -0
  145. package/conductor/archive/multi_agent_orchestration_20260220/spec.md +17 -0
  146. package/conductor/archive/mvp_gate_v2_validation_20260221/index.md +7 -0
  147. package/conductor/archive/mvp_gate_v2_validation_20260221/metadata.json +10 -0
  148. package/conductor/archive/mvp_gate_v2_validation_20260221/plan.md +18 -0
  149. package/conductor/archive/mvp_gate_v2_validation_20260221/spec.md +13 -0
  150. package/conductor/archive/mvp_gate_wizard_alignment_20260221/index.md +5 -0
  151. package/conductor/archive/mvp_gate_wizard_alignment_20260221/metadata.json +8 -0
  152. package/conductor/archive/mvp_gate_wizard_alignment_20260221/plan.md +28 -0
  153. package/conductor/archive/mvp_gate_wizard_alignment_20260221/spec.md +17 -0
  154. package/conductor/archive/mvp_smoke_release_gate_20260220/index.md +5 -0
  155. package/conductor/archive/mvp_smoke_release_gate_20260220/metadata.json +8 -0
  156. package/conductor/archive/mvp_smoke_release_gate_20260220/plan.md +28 -0
  157. package/conductor/archive/mvp_smoke_release_gate_20260220/spec.md +16 -0
  158. package/conductor/archive/npm_command_reliability_20260220/index.md +5 -0
  159. package/conductor/archive/npm_command_reliability_20260220/metadata.json +8 -0
  160. package/conductor/archive/npm_command_reliability_20260220/plan.md +38 -0
  161. package/conductor/archive/npm_command_reliability_20260220/spec.md +16 -0
  162. package/conductor/archive/onboard_cli_wizard_20260221/index.md +5 -0
  163. package/conductor/archive/onboard_cli_wizard_20260221/metadata.json +8 -0
  164. package/conductor/archive/onboard_cli_wizard_20260221/plan.md +28 -0
  165. package/conductor/archive/onboard_cli_wizard_20260221/spec.md +17 -0
  166. package/conductor/archive/persona_state_sync_20260220/metadata.json +8 -0
  167. package/conductor/archive/persona_state_sync_20260220/plan.md +28 -0
  168. package/conductor/archive/persona_state_sync_20260220/spec.md +22 -0
  169. package/conductor/archive/proactive_execution_20260220/metadata.json +8 -0
  170. package/conductor/archive/proactive_execution_20260220/plan.md +18 -0
  171. package/conductor/archive/proactive_execution_20260220/spec.md +9 -0
  172. package/conductor/archive/release_pipeline_rollback_20260220/metadata.json +8 -0
  173. package/conductor/archive/release_pipeline_rollback_20260220/plan.md +28 -0
  174. package/conductor/archive/release_pipeline_rollback_20260220/spec.md +17 -0
  175. package/conductor/archive/release_rollback_drill_20260221/index.md +7 -0
  176. package/conductor/archive/release_rollback_drill_20260221/metadata.json +10 -0
  177. package/conductor/archive/release_rollback_drill_20260221/plan.md +17 -0
  178. package/conductor/archive/release_rollback_drill_20260221/spec.md +14 -0
  179. package/conductor/archive/reliability_evaluation_harness_20260220/metadata.json +8 -0
  180. package/conductor/archive/reliability_evaluation_harness_20260220/plan.md +28 -0
  181. package/conductor/archive/reliability_evaluation_harness_20260220/spec.md +17 -0
  182. package/conductor/archive/runtime_budget_governance_20260220/metadata.json +8 -0
  183. package/conductor/archive/runtime_budget_governance_20260220/plan.md +26 -0
  184. package/conductor/archive/runtime_budget_governance_20260220/spec.md +20 -0
  185. package/conductor/archive/runtime_env_migration_20260221/index.md +5 -0
  186. package/conductor/archive/runtime_env_migration_20260221/metadata.json +8 -0
  187. package/conductor/archive/runtime_env_migration_20260221/plan.md +28 -0
  188. package/conductor/archive/runtime_env_migration_20260221/spec.md +17 -0
  189. package/conductor/archive/runtime_health_doctor_20260220/index.md +5 -0
  190. package/conductor/archive/runtime_health_doctor_20260220/metadata.json +8 -0
  191. package/conductor/archive/runtime_health_doctor_20260220/plan.md +28 -0
  192. package/conductor/archive/runtime_health_doctor_20260220/spec.md +16 -0
  193. package/conductor/archive/secrets_hygiene_rotation_20260221/index.md +15 -0
  194. package/conductor/archive/secrets_hygiene_rotation_20260221/metadata.json +10 -0
  195. package/conductor/archive/secrets_hygiene_rotation_20260221/plan.md +21 -0
  196. package/conductor/archive/secrets_hygiene_rotation_20260221/spec.md +13 -0
  197. package/conductor/archive/secrets_vault_rotation_20260220/metadata.json +8 -0
  198. package/conductor/archive/secrets_vault_rotation_20260220/plan.md +28 -0
  199. package/conductor/archive/secrets_vault_rotation_20260220/spec.md +17 -0
  200. package/conductor/archive/semantic_memory_20260220/metadata.json +8 -0
  201. package/conductor/archive/semantic_memory_20260220/plan.md +19 -0
  202. package/conductor/archive/semantic_memory_20260220/spec.md +10 -0
  203. package/conductor/archive/skill_packaging_versioning_20260220/metadata.json +8 -0
  204. package/conductor/archive/skill_packaging_versioning_20260220/plan.md +28 -0
  205. package/conductor/archive/skill_packaging_versioning_20260220/spec.md +17 -0
  206. package/conductor/archive/test_coverage_matrix_20260220/metadata.json +8 -0
  207. package/conductor/archive/test_coverage_matrix_20260220/plan.md +29 -0
  208. package/conductor/archive/test_coverage_matrix_20260220/spec.md +17 -0
  209. package/conductor/archive/test_fk_unblock_20260220/index.md +5 -0
  210. package/conductor/archive/test_fk_unblock_20260220/metadata.json +8 -0
  211. package/conductor/archive/test_fk_unblock_20260220/plan.md +62 -0
  212. package/conductor/archive/test_fk_unblock_20260220/spec.md +16 -0
  213. package/conductor/archive/tool_inventory_mcp_harmonization_20260221/plan.md +26 -0
  214. package/conductor/archive/tool_inventory_mcp_harmonization_20260221/spec.md +14 -0
  215. package/conductor/archive/tool_policy_governance_20260220/metadata.json +8 -0
  216. package/conductor/archive/tool_policy_governance_20260220/plan.md +28 -0
  217. package/conductor/archive/tool_policy_governance_20260220/spec.md +16 -0
  218. package/conductor/archive/track_status_reconciliation_20260220/index.md +5 -0
  219. package/conductor/archive/track_status_reconciliation_20260220/metadata.json +8 -0
  220. package/conductor/archive/track_status_reconciliation_20260220/plan.md +28 -0
  221. package/conductor/archive/track_status_reconciliation_20260220/reconciliation_notes.md +105 -0
  222. package/conductor/archive/track_status_reconciliation_20260220/spec.md +16 -0
  223. package/conductor/archive/twinclaw_workspace_alignment_20260221/plan.md +25 -0
  224. package/conductor/archive/twinclaw_workspace_alignment_20260221/spec.md +14 -0
  225. package/conductor/archive/type_safety_debt_20260220/index.md +5 -0
  226. package/conductor/archive/type_safety_debt_20260220/metadata.json +8 -0
  227. package/conductor/archive/type_safety_debt_20260220/plan.md +28 -0
  228. package/conductor/archive/type_safety_debt_20260220/spec.md +21 -0
  229. package/conductor/archive/type_safety_reliability_stabilization_20260221/index.md +7 -0
  230. package/conductor/archive/type_safety_reliability_stabilization_20260221/metadata.json +10 -0
  231. package/conductor/archive/type_safety_reliability_stabilization_20260221/plan.md +19 -0
  232. package/conductor/archive/type_safety_reliability_stabilization_20260221/spec.md +13 -0
  233. package/conductor/archive/user_interfaces_20260220/metadata.json +8 -0
  234. package/conductor/archive/user_interfaces_20260220/plan.md +19 -0
  235. package/conductor/archive/user_interfaces_20260220/spec.md +9 -0
  236. package/conductor/archive/whatsapp_dispatcher_20260220/metadata.json +8 -0
  237. package/conductor/archive/whatsapp_dispatcher_20260220/plan.md +19 -0
  238. package/conductor/archive/whatsapp_dispatcher_20260220/spec.md +15 -0
  239. package/conductor/archive/windows_ci_powershell_alignment_20260221/index.md +12 -0
  240. package/conductor/archive/windows_ci_powershell_alignment_20260221/metadata.json +11 -0
  241. package/conductor/archive/windows_ci_powershell_alignment_20260221/plan.md +18 -0
  242. package/conductor/archive/windows_ci_powershell_alignment_20260221/spec.md +18 -0
  243. package/conductor/archive/windows_docs_alignment_20260221/index.md +12 -0
  244. package/conductor/archive/windows_docs_alignment_20260221/metadata.json +11 -0
  245. package/conductor/archive/windows_docs_alignment_20260221/plan.md +18 -0
  246. package/conductor/archive/windows_docs_alignment_20260221/spec.md +20 -0
  247. package/conductor/archive/windows_runtime_cli_enforcement_20260221/index.md +12 -0
  248. package/conductor/archive/windows_runtime_cli_enforcement_20260221/metadata.json +11 -0
  249. package/conductor/archive/windows_runtime_cli_enforcement_20260221/plan.md +20 -0
  250. package/conductor/archive/windows_runtime_cli_enforcement_20260221/spec.md +20 -0
  251. package/conductor/code_styleguides/node.md +8 -0
  252. package/conductor/code_styleguides/react.md +9 -0
  253. package/conductor/code_styleguides/typescript.md +8 -0
  254. package/conductor/conductor-new-track.md +178 -0
  255. package/conductor/conductor.md +221 -0
  256. package/conductor/index.md +14 -0
  257. package/conductor/product-guidelines.md +17 -0
  258. package/conductor/product.md +34 -0
  259. package/conductor/setup_state.json +1 -0
  260. package/conductor/tech-stack.md +34 -0
  261. package/conductor/tracks/onboarding_wizard_ux2_20260221/plan.md +16 -0
  262. package/conductor/tracks.md +164 -0
  263. package/conductor/workflow.md +16 -0
  264. package/dist/api/router.js +1 -1
  265. package/dist/config/config-loader.js +1 -1
  266. package/dist/config/env-schema.js +2 -2
  267. package/dist/config/identity-bootstrap.js +55 -55
  268. package/dist/config/json-config.js +9 -12
  269. package/dist/config/workspace.js +44 -60
  270. package/dist/core/channels-cli.js +14 -14
  271. package/dist/core/cli.js +23 -29
  272. package/dist/core/context-assembly.js +1 -1
  273. package/dist/core/doctor.js +14 -14
  274. package/dist/core/gateway-cli.js +17 -17
  275. package/dist/core/gateway.js +1 -1
  276. package/dist/core/heartbeat.js +2 -2
  277. package/dist/core/logs-cli.js +4 -4
  278. package/dist/core/onboarding.js +19 -108
  279. package/dist/core/simplified-onboarding.js +322 -0
  280. package/dist/index.js +23 -27
  281. package/dist/interfaces/dispatcher.js +2 -2
  282. package/dist/interfaces/tui-dashboard.js +3 -3
  283. package/dist/services/job-scheduler.js +1 -1
  284. package/dist/services/local-state-backup.js +3 -3
  285. package/dist/services/mcp-client-adapter.js +3 -3
  286. package/dist/services/model-router.js +2 -2
  287. package/dist/services/mvp-gate.js +30 -90
  288. package/dist/services/policy-engine.js +1 -1
  289. package/dist/services/release-pipeline.js +3 -3
  290. package/dist/services/secret-vault.js +2 -2
  291. package/dist/services/skill-registry.js +1 -1
  292. package/dist/skills/builtin.js +1 -1
  293. package/docker-compose.yml +15 -0
  294. package/docs/PRD.md +167 -0
  295. package/docs/TwinClaw-blueprint.md +225 -0
  296. package/docs/configuration-guide.md +112 -0
  297. package/docs/gate-migration-notes.md +20 -0
  298. package/docs/model-apis.md +19 -0
  299. package/docs/mvp-release-checklist.md +156 -0
  300. package/docs/plan-for-agents.md +104 -0
  301. package/docs/project-audit.md +187 -0
  302. package/docs/release-rollback-runbook.md +102 -0
  303. package/docs/rotation-runbook.md +96 -0
  304. package/failures.txt +3 -0
  305. package/failures3.txt +12 -0
  306. package/gui/README.md +73 -0
  307. package/gui/eslint.config.js +23 -0
  308. package/gui/index.html +13 -0
  309. package/gui/package-lock.json +4152 -0
  310. package/gui/package.json +33 -0
  311. package/gui/postcss.config.js +6 -0
  312. package/gui/public/vite.svg +1 -0
  313. package/gui/src/App.css +42 -0
  314. package/gui/src/App.tsx +526 -0
  315. package/gui/src/assets/react.svg +1 -0
  316. package/gui/src/hooks/use-dashboard-data.ts +56 -0
  317. package/gui/src/hooks/use-websocket-stream.ts +114 -0
  318. package/gui/src/index.css +25 -0
  319. package/gui/src/main.tsx +10 -0
  320. package/gui/src/services/api.ts +245 -0
  321. package/gui/src/services/dashboard-poller.ts +167 -0
  322. package/gui/src/services/persona-editor-controller.ts +231 -0
  323. package/gui/src/services/websocket-client.ts +281 -0
  324. package/gui/tailwind.config.js +23 -0
  325. package/gui/tsconfig.app.json +28 -0
  326. package/gui/tsconfig.json +7 -0
  327. package/gui/tsconfig.node.json +26 -0
  328. package/gui/vite.config.ts +7 -0
  329. package/out.json +0 -0
  330. package/out.txt +0 -0
  331. package/out2.json +0 -0
  332. package/out3.json +0 -0
  333. package/package.json +12 -24
  334. package/src/api/handlers/browser.ts +199 -0
  335. package/src/api/handlers/callback.ts +102 -0
  336. package/src/api/handlers/config-validate.ts +24 -0
  337. package/src/api/handlers/health.ts +144 -0
  338. package/src/api/handlers/local-state-backup.ts +153 -0
  339. package/src/api/handlers/persona-state.ts +79 -0
  340. package/src/api/handlers/skill-packages.ts +116 -0
  341. package/src/api/router.ts +343 -0
  342. package/src/api/runtime-event-producer.ts +133 -0
  343. package/src/api/shared.ts +99 -0
  344. package/src/api/websocket-hub.ts +396 -0
  345. package/src/config/config-loader.ts +31 -0
  346. package/src/config/env-schema.ts +278 -0
  347. package/src/config/env-validator.ts +297 -0
  348. package/src/config/identity-bootstrap.ts +131 -0
  349. package/src/config/json-config.ts +365 -0
  350. package/src/config/workspace.ts +215 -0
  351. package/src/core/channels-cli.ts +90 -0
  352. package/src/core/cli.ts +122 -0
  353. package/src/core/context-assembly.ts +38 -0
  354. package/src/core/doctor.ts +408 -0
  355. package/src/core/gateway-cli.ts +400 -0
  356. package/src/core/gateway.ts +598 -0
  357. package/src/core/heartbeat.ts +72 -0
  358. package/src/core/lane-executor.ts +167 -0
  359. package/src/core/logs-cli.ts +77 -0
  360. package/src/core/onboarding.ts +851 -0
  361. package/src/core/pairing-cli.ts +102 -0
  362. package/src/core/secret-vault-cli.ts +243 -0
  363. package/src/core/simplified-onboarding.ts +372 -0
  364. package/src/core/types.ts +39 -0
  365. package/src/index.ts +487 -0
  366. package/src/interfaces/dispatcher.ts +284 -0
  367. package/src/interfaces/telegram_handler.ts +107 -0
  368. package/src/interfaces/tui-dashboard.ts +69 -0
  369. package/src/interfaces/whatsapp_handler.ts +114 -0
  370. package/src/release/cli.ts +122 -0
  371. package/src/release/mvp-gate-cli.ts +145 -0
  372. package/src/release/twinclaw-config-schema.ts +250 -0
  373. package/src/services/block-chunker.ts +212 -0
  374. package/src/services/browser-service.ts +452 -0
  375. package/src/services/context-lifecycle.ts +412 -0
  376. package/src/services/db.ts +1534 -0
  377. package/src/services/delivery-tracker.ts +147 -0
  378. package/src/services/dm-pairing.ts +338 -0
  379. package/src/services/embedding-service.ts +155 -0
  380. package/src/services/file-watcher.ts +154 -0
  381. package/src/services/inbound-debounce.ts +124 -0
  382. package/src/services/incident-manager.ts +666 -0
  383. package/src/services/job-scheduler.ts +221 -0
  384. package/src/services/local-state-backup.ts +843 -0
  385. package/src/services/mcp-client-adapter.ts +380 -0
  386. package/src/services/mcp-server-manager.ts +199 -0
  387. package/src/services/model-router.ts +1180 -0
  388. package/src/services/mvp-gate.ts +931 -0
  389. package/src/services/orchestration-service.ts +606 -0
  390. package/src/services/persona-state.ts +358 -0
  391. package/src/services/policy-engine.ts +106 -0
  392. package/src/services/proactive-notifier.ts +122 -0
  393. package/src/services/queue-service.ts +204 -0
  394. package/src/services/release-pipeline.ts +810 -0
  395. package/src/services/runtime-budget-governor.ts +556 -0
  396. package/src/services/secret-vault.ts +970 -0
  397. package/src/services/semantic-memory.ts +339 -0
  398. package/src/services/skill-package-manager.ts +1114 -0
  399. package/src/services/skill-registry.ts +151 -0
  400. package/src/services/streaming-output.ts +113 -0
  401. package/src/services/stt-service.ts +48 -0
  402. package/src/services/tts-service.ts +57 -0
  403. package/src/skills/builtin.ts +1 -1
  404. package/src/types/mvp-gate.ts +2 -3
  405. package/src/utils/logger.ts +78 -0
  406. package/src/utils/retry.ts +100 -0
  407. package/src/utils/secret-scan.ts +261 -0
  408. package/tests/api/browser-reference.spec.ts +154 -0
  409. package/tests/api/callback.spec.ts +122 -0
  410. package/tests/api/control-plane.spec.ts +424 -0
  411. package/tests/api/health.spec.ts +177 -0
  412. package/tests/api/persona-state.spec.ts +91 -0
  413. package/tests/api/websocket-hub.spec.ts +461 -0
  414. package/tests/config/json-config.spec.ts +77 -0
  415. package/tests/config/workspace.spec.ts +275 -0
  416. package/tests/core/cli.spec.ts +156 -0
  417. package/tests/core/doctor.spec.ts +356 -0
  418. package/tests/core/gateway-cli.spec.ts +60 -0
  419. package/tests/core/logs-cli.spec.ts +80 -0
  420. package/tests/core/onboarding-setup.spec.ts +160 -0
  421. package/tests/core/onboarding-wizard.spec.ts +134 -0
  422. package/tests/core/pairing-cli.spec.ts +65 -0
  423. package/tests/gui/persona-editor-controller.spec.ts +113 -0
  424. package/tests/gui/use-dashboard-data.spec.ts +150 -0
  425. package/tests/harness/context-lifecycle.spec.ts +90 -0
  426. package/tests/harness/delivery-tracker.spec.ts +61 -0
  427. package/tests/harness/dispatcher-reliability.spec.ts +86 -0
  428. package/tests/harness/dispatcher-streaming.spec.ts +238 -0
  429. package/tests/harness/incident-manager.spec.ts +241 -0
  430. package/tests/harness/local-state-backup.spec.ts +257 -0
  431. package/tests/harness/mcp-sandboxing.spec.ts +142 -0
  432. package/tests/harness/mock-router.ts +78 -0
  433. package/tests/harness/model-router.spec.ts +274 -0
  434. package/tests/harness/mvp-gate.spec.ts +487 -0
  435. package/tests/harness/orchestration-edge.spec.ts +135 -0
  436. package/tests/harness/persona-state-service.spec.ts +110 -0
  437. package/tests/harness/policy-engine.spec.ts +85 -0
  438. package/tests/harness/reasoning-graph.spec.ts +121 -0
  439. package/tests/harness/release-pipeline.spec.ts +207 -0
  440. package/tests/harness/retry.spec.ts +51 -0
  441. package/tests/harness/runner.spec.ts +368 -0
  442. package/tests/harness/runtime-budget-governor.spec.ts +152 -0
  443. package/tests/harness/skill-package-manager.spec.ts +234 -0
  444. package/tests/harness/tool-inventory-harmonization.spec.ts +156 -0
  445. package/tests/harness/types.ts +35 -0
  446. package/tests/policy/policy-engine.spec.ts +95 -0
  447. package/tests/queue/queue-service.spec.ts +82 -0
  448. package/tests/screenshot.png +0 -0
  449. package/tests/services/browser-reference.spec.ts +69 -0
  450. package/tests/services/config-env-validation.spec.ts +352 -0
  451. package/tests/services/config-loader.spec.ts +75 -0
  452. package/tests/services/dm-pairing.spec.ts +82 -0
  453. package/tests/services/mcp-registry.spec.ts +281 -0
  454. package/tests/services/messaging-voice.spec.ts +225 -0
  455. package/tests/services/proactive-execution.spec.ts +393 -0
  456. package/tests/services/secret-vault.spec.ts +116 -0
  457. package/tests/test-browser.ts +24 -0
  458. package/tests/utils/logger.spec.ts +28 -0
  459. package/tsconfig.json +17 -0
  460. package/twinclaw.default.json +41 -0
  461. package/vitest.config.ts +18 -0
  462. package/vitest.workspace.ts +0 -0
  463. package/vitest_output.txt +0 -0
  464. package/bin/npm-twinclaw.js +0 -17
  465. package/bin/postinstall.js +0 -68
  466. package/bin/run-twinbot-cli.js +0 -36
  467. package/bin/twinbot.js +0 -4
  468. package/bin/twinclaw.js +0 -4
package/.env.example ADDED
@@ -0,0 +1,71 @@
1
+ # ─── Runtime Core (REQUIRED) ────────────────────────────────────────────────
2
+ # Master secret for HMAC webhook signature verification and secret-vault
3
+ # encryption fallback. Must be set before startup.
4
+ API_SECRET=your_api_secret_here
5
+
6
+ # ─── Model Routing ───────────────────────────────────────────────────────────
7
+ # At least one model API key must be present for AI functionality.
8
+
9
+ # Primary model provider (Modal-hosted GLM-5-FP8).
10
+ MODAL_API_KEY=your_modal_api_key_here
11
+
12
+ # First fallback model provider (OpenRouter).
13
+ OPENROUTER_API_KEY=your_openrouter_api_key_here
14
+
15
+ # Second fallback model provider (Google Gemini).
16
+ GEMINI_API_KEY=your_gemini_api_key_here
17
+
18
+ # ─── Telegram Bot ────────────────────────────────────────────────────────────
19
+ # Both keys required to enable Telegram messaging. Obtain token from @BotFather.
20
+ TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
21
+
22
+ # Your personal Telegram user ID (integer). Only this ID can interact with the bot.
23
+ # Find it by messaging @userinfobot on Telegram.
24
+ TELEGRAM_USER_ID=your telegram_user_id_here
25
+
26
+ # ─── WhatsApp ────────────────────────────────────────────────────────────────
27
+ # Phone number for the WhatsApp native client (E.164 format recommended).
28
+ WHATSAPP_PHONE_NUMBER=your_whatsapp_number_here
29
+
30
+ # ─── Groq (Speech-to-Text & Text-to-Speech) ─────────────────────────────────
31
+ # Required when Telegram or WhatsApp voice messaging is active.
32
+ # Free-tier API key from https://console.groq.com
33
+ GROQ_API_KEY=your_groq_api_key_here
34
+
35
+ # ─── Secret Vault (optional) ────────────────────────────────────────────────
36
+ # Dedicated AES-256 encryption key for the secret vault.
37
+ # Falls back to API_SECRET if unset.
38
+ # SECRET_VAULT_MASTER_KEY=your_vault_master_key_here
39
+
40
+ # Comma-separated list of additional secret names required at startup.
41
+ # SECRET_VAULT_REQUIRED=DB_PASSWORD,SOME_TOKEN
42
+
43
+ # ─── Control Plane API (optional) ───────────────────────────────────────────
44
+ # HTTP port for the control plane API server (default: 3100).
45
+ # API_PORT=3100
46
+
47
+ # ─── Embedding (optional) ────────────────────────────────────────────────────
48
+ # Embedding backend: "openai" (default) or "ollama" for local-only operation.
49
+ # EMBEDDING_PROVIDER=openai
50
+
51
+ # API key for OpenAI-compatible embedding endpoint (takes priority over OPENAI_API_KEY).
52
+ # EMBEDDING_API_KEY=your_embedding_api_key_here
53
+
54
+ # OpenAI API key used as fallback for embeddings when EMBEDDING_API_KEY is unset.
55
+ # OPENAI_API_KEY=your_openai_api_key_here
56
+
57
+ # Custom OpenAI-compatible embedding endpoint URL.
58
+ # EMBEDDING_API_URL=https://api.openai.com/v1/embeddings
59
+
60
+ # Embedding model name (default: text-embedding-3-small).
61
+ # EMBEDDING_MODEL=text-embedding-3-small
62
+
63
+ # Expected embedding vector dimensionality for sqlite-vec storage (default: 1536).
64
+ # Must match your chosen embedding model.
65
+ # MEMORY_EMBEDDING_DIM=1536
66
+
67
+ # Base URL for a local Ollama server (default: http://localhost:11434).
68
+ # OLLAMA_BASE_URL=http://localhost:11434
69
+
70
+ # Ollama embedding model name (default: mxbai-embed-large).
71
+ # OLLAMA_EMBEDDING_MODEL=mxbai-embed-large
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env sh
2
+ set -eu
3
+
4
+ echo "[TwinClaw] Running TypeScript check..."
5
+ npm run check
@@ -0,0 +1,170 @@
1
+ # Agent Instructions — Full-Stack Web Development
2
+
3
+ ---
4
+
5
+ ## 1. The Prime Directive — Read Before You Write
6
+
7
+ > **Before suggesting, generating, or modifying a single line of code, you MUST read and understand the existing implementation.**
8
+
9
+ This is non-negotiable. Violating it produces broken, duplicate, or inconsistent code.
10
+
11
+ **Concrete steps before any task:**
12
+
13
+ 1. **Discover the codebase structure** — read the top-level directory tree, then drill into the directories most relevant to the task.
14
+ 2. **Read every file that will be touched or that depends on what will be touched.** If unsure, read more, not less.
15
+ 3. **Trace the data flow end-to-end** — identify where data originates (API, DB, context, mock), how it is transformed, and where it is consumed.
16
+ 4. **Identify the established patterns** — naming conventions, service abstraction layers, state management approach, styling system, component structure. Match them exactly.
17
+ 5. **Fetch the relevant SKILL.md** — before implementing any non-trivial feature (UI, API, DB, auth, etc.), search for and read the most relevant skill file. This is required, not optional.
18
+
19
+ Only after completing all five steps above should you write or suggest any code.
20
+
21
+ ---
22
+
23
+ ## 2. Architecture Principles
24
+
25
+ ### Service Abstraction — Absolute Rule
26
+ - **All data access must go through the designated service layer** (e.g., `CmsService`, `ApiService`, or equivalent).
27
+ - Direct `fetch('/api/...')` calls inside components or pages are **strictly forbidden**.
28
+ - If you encounter a raw `fetch` in a component, refactor it into the service layer before proceeding.
29
+ - The service layer is the single source of truth for data contracts between frontend and backend.
30
+
31
+ ### Modular Backend
32
+ - Keep backend routers thin — they dispatch only.
33
+ - Business logic lives in isolated handler modules (one concern per file).
34
+ - Shared utilities (CORS, DB helpers, response formatting) go in a `shared.ts` or equivalent.
35
+ - Never add logic to a router that belongs in a handler.
36
+
37
+ ### State Management
38
+ - Global state (user session, app config, shared fetched data) lives in context or a dedicated store.
39
+ - Local component state handles only ephemeral UI concerns.
40
+ - Never duplicate global state inside local component state.
41
+
42
+ ### Environment Strategy
43
+ - Development uses mocked/local data for fast iteration.
44
+ - Production uses real APIs and databases.
45
+ - Feature flags or env vars (`VITE_*`, etc.) control which path is active — never hardcode environment assumptions.
46
+
47
+ ---
48
+
49
+ ## 3. Database & Data Layer
50
+
51
+ ### Schema Conventions
52
+ - Every table has: `id` (PK, auto or UUID), `created_at`, `updated_at`.
53
+ - Soft deletes preferred: `status` column (`published` / `draft` / `archived`).
54
+ - Scheduled content uses `scheduled_at` (ISO 8601).
55
+
56
+ ### Localization
57
+ - Multi-lingual fields stored as JSON strings: `{"en": "...", "hi": "..."}`.
58
+ - Always serialize with a helper before writing; always parse with a helper before returning to the frontend.
59
+ - Frontend always receives typed DTO objects, never raw JSON strings.
60
+
61
+ ### Versioning & Safety
62
+ - Every `PUT`/`PATCH` must fetch the existing row and save a version snapshot **before** applying changes.
63
+ - Never perform destructive updates without a recoverable history.
64
+
65
+ ### Write Optimization
66
+ - Avoid high-frequency DB writes. Apply throttling/debouncing for analytics events, rate history, and similar high-volume writes.
67
+ - Debounce frontend-initiated writes via session tracking where possible.
68
+
69
+ ---
70
+
71
+ ## 4. Frontend — Design & Aesthetic Standards
72
+
73
+ ### Refer the frontend-design.md SKILL file for detailed design guidelines.
74
+ ### humanist-web-style.md represents our personal design language and should be loaded by default for all frontend work
75
+
76
+ ---
77
+
78
+ ## 5. Code Quality Standards
79
+
80
+ ### TypeScript
81
+ - Strict mode always on.
82
+ - No `any`. Use `unknown` and narrow, or define a proper type.
83
+ - Interfaces for object shapes; types for unions and aliases.
84
+ - Exported types live in a dedicated `types/` directory or co-located `*.types.ts` file.
85
+
86
+ ### Naming Conventions
87
+ - **Files**: `kebab-case` for components and utilities. Match the project's existing convention exactly.
88
+ - **Components**: `PascalCase`.
89
+ - **Functions & variables**: `camelCase`.
90
+ - **Constants**: `UPPER_SNAKE_CASE`.
91
+ - **Types/Interfaces**: `PascalCase`, prefix interfaces with `I` only if the project already does so.
92
+
93
+ ### Error Handling
94
+ - Every async operation has explicit error handling.
95
+ - User-facing errors are friendly and actionable. Internal errors are logged with context.
96
+ - Never swallow errors silently.
97
+
98
+ ### Comments & Documentation
99
+ - Comments explain *why*, not *what*. Code explains what.
100
+ - Complex algorithms and non-obvious decisions get a comment.
101
+ - Public service methods get JSDoc.
102
+
103
+ ---
104
+
105
+ ## 6. API Design
106
+
107
+ - RESTful by default. Follow existing route conventions precisely.
108
+ - All responses use a consistent envelope: `{ data, error, meta }` or whatever the project already uses — match it.
109
+ - Validate all inputs on the server side. Never trust client data.
110
+ - Return appropriate HTTP status codes (200, 201, 400, 401, 403, 404, 409, 500).
111
+ - CORS headers are set in a single shared location, never scattered across handlers.
112
+
113
+ ---
114
+
115
+ ## 7. Security
116
+
117
+ - Never expose secrets, API keys, or credentials in frontend code.
118
+ - Sanitize all user-generated content before storing or rendering.
119
+ - Parameterize all database queries — no string interpolation into SQL.
120
+ - Auth checks happen on the server, never rely solely on frontend guards.
121
+
122
+ ---
123
+
124
+ ## 8. Developer Workflow
125
+
126
+ ### Before Starting Any Task
127
+ 1. Read the task carefully. Identify ambiguities and resolve them before writing code.
128
+ 2. Read all relevant existing code (see Section 0).
129
+ 3. Fetch the relevant SKILL.md (see Section 1).
130
+ 4. Plan the implementation mentally. Identify files to create/modify.
131
+
132
+ ### Making Changes
133
+ - Make the smallest change that correctly solves the problem. Don't refactor unrelated code while solving a bug.
134
+ - If you discover a pre-existing bug or anti-pattern while working, flag it separately rather than silently changing unrelated behavior.
135
+ - Run through the change mentally: does it break any existing data flow, type contract, or pattern?
136
+
137
+ ### Database Migrations
138
+ - Every schema change gets a migration file. Never mutate the schema directly.
139
+ - Apply locally first, verify, then apply to production.
140
+ - Migration files are append-only — never edit a previously applied migration.
141
+
142
+ ### Deployment
143
+ 1. `npm run build` — verify zero errors and zero type errors.
144
+ 2. Run the local preview and manually verify the changed surfaces.
145
+ 3. Deploy via the project's established pipeline.
146
+
147
+ ---
148
+
149
+ ## 9. Prohibited Patterns
150
+
151
+ These are hard rules. Finding one of these in existing code is a reason to refactor, not a reason to follow the pattern.
152
+
153
+ - ❌ Raw `fetch` calls in components or pages — use the service layer.
154
+ - ❌ `any` type in TypeScript.
155
+ - ❌ Hardcoded environment-specific values (URLs, keys, flags) outside of env config.
156
+ - ❌ Monolithic backend handlers — keep them modular and single-concern.
157
+ - ❌ Destructive DB updates without versioning/snapshotting.
158
+ - ❌ Placeholder UI with fake data shipped to production.
159
+ - ❌ Inline styles for anything that belongs in the design system.
160
+ - ❌ Logic duplication across the frontend and backend for the same validation rule.
161
+ - ❌ Skipping the "read existing code" step because the task seems small.
162
+
163
+ ---
164
+
165
+ ## 10. When in Doubt
166
+
167
+ - **Read more code.** The answer is almost always already in the codebase.
168
+ - **Match the existing pattern**, even if you think a different approach is better. Flag the inconsistency separately.
169
+ - **Ask before assuming** on anything that touches auth, payments, data deletion, or external API contracts.
170
+ - **Fetch the SKILL.md.** It exists for a reason.
@@ -0,0 +1,133 @@
1
+ ---
2
+ name: find-skills
3
+ description: Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
4
+ ---
5
+
6
+ # Find Skills
7
+
8
+ This skill helps you discover and install skills from the open agent skills ecosystem.
9
+
10
+ ## When to Use This Skill
11
+
12
+ Use this skill when the user:
13
+
14
+ - Asks "how do I do X" where X might be a common task with an existing skill
15
+ - Says "find a skill for X" or "is there a skill for X"
16
+ - Asks "can you do X" where X is a specialized capability
17
+ - Expresses interest in extending agent capabilities
18
+ - Wants to search for tools, templates, or workflows
19
+ - Mentions they wish they had help with a specific domain (design, testing, deployment, etc.)
20
+
21
+ ## What is the Skills CLI?
22
+
23
+ The Skills CLI (`npx skills`) is the package manager for the open agent skills ecosystem. Skills are modular packages that extend agent capabilities with specialized knowledge, workflows, and tools.
24
+
25
+ **Key commands:**
26
+
27
+ - `npx skills find [query]` - Search for skills interactively or by keyword
28
+ - `npx skills add <package>` - Install a skill from GitHub or other sources
29
+ - `npx skills check` - Check for skill updates
30
+ - `npx skills update` - Update all installed skills
31
+
32
+ **Browse skills at:** https://skills.sh/
33
+
34
+ ## How to Help Users Find Skills
35
+
36
+ ### Step 1: Understand What They Need
37
+
38
+ When a user asks for help with something, identify:
39
+
40
+ 1. The domain (e.g., React, testing, design, deployment)
41
+ 2. The specific task (e.g., writing tests, creating animations, reviewing PRs)
42
+ 3. Whether this is a common enough task that a skill likely exists
43
+
44
+ ### Step 2: Search for Skills
45
+
46
+ Run the find command with a relevant query:
47
+
48
+ ```bash
49
+ npx skills find [query]
50
+ ```
51
+
52
+ For example:
53
+
54
+ - User asks "how do I make my React app faster?" → `npx skills find react performance`
55
+ - User asks "can you help me with PR reviews?" → `npx skills find pr review`
56
+ - User asks "I need to create a changelog" → `npx skills find changelog`
57
+
58
+ The command will return results like:
59
+
60
+ ```
61
+ Install with npx skills add <owner/repo@skill>
62
+
63
+ vercel-labs/agent-skills@vercel-react-best-practices
64
+ └ https://skills.sh/vercel-labs/agent-skills/vercel-react-best-practices
65
+ ```
66
+
67
+ ### Step 3: Present Options to the User
68
+
69
+ When you find relevant skills, present them to the user with:
70
+
71
+ 1. The skill name and what it does
72
+ 2. The install command they can run
73
+ 3. A link to learn more at skills.sh
74
+
75
+ Example response:
76
+
77
+ ```
78
+ I found a skill that might help! The "vercel-react-best-practices" skill provides
79
+ React and Next.js performance optimization guidelines from Vercel Engineering.
80
+
81
+ To install it:
82
+ npx skills add vercel-labs/agent-skills@vercel-react-best-practices
83
+
84
+ Learn more: https://skills.sh/vercel-labs/agent-skills/vercel-react-best-practices
85
+ ```
86
+
87
+ ### Step 4: Offer to Install
88
+
89
+ If the user wants to proceed, you can install the skill for them:
90
+
91
+ ```bash
92
+ npx skills add <owner/repo@skill> -g -y
93
+ ```
94
+
95
+ The `-g` flag installs globally (user-level) and `-y` skips confirmation prompts.
96
+
97
+ ## Common Skill Categories
98
+
99
+ When searching, consider these common categories:
100
+
101
+ | Category | Example Queries |
102
+ | --------------- | ---------------------------------------- |
103
+ | Web Development | react, nextjs, typescript, css, tailwind |
104
+ | Testing | testing, jest, playwright, e2e |
105
+ | DevOps | deploy, docker, kubernetes, ci-cd |
106
+ | Documentation | docs, readme, changelog, api-docs |
107
+ | Code Quality | review, lint, refactor, best-practices |
108
+ | Design | ui, ux, design-system, accessibility |
109
+ | Productivity | workflow, automation, git |
110
+
111
+ ## Tips for Effective Searches
112
+
113
+ 1. **Use specific keywords**: "react testing" is better than just "testing"
114
+ 2. **Try alternative terms**: If "deploy" doesn't work, try "deployment" or "ci-cd"
115
+ 3. **Check popular sources**: Many skills come from `vercel-labs/agent-skills` or `ComposioHQ/awesome-claude-skills`
116
+
117
+ ## When No Skills Are Found
118
+
119
+ If no relevant skills exist:
120
+
121
+ 1. Acknowledge that no existing skill was found
122
+ 2. Offer to help with the task directly using your general capabilities
123
+ 3. Suggest the user could create their own skill with `npx skills init`
124
+
125
+ Example:
126
+
127
+ ```
128
+ I searched for skills related to "xyz" but didn't find any matches.
129
+ I can still help you with this task directly! Would you like me to proceed?
130
+
131
+ If this is something you do often, you could create your own skill:
132
+ npx skills init my-xyz-skill
133
+ ```
@@ -0,0 +1,177 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: frontend-design
3
+ description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
4
+ ---
5
+
6
+ This skill exists because AI-generated interfaces converge on a recognizable, low-density aesthetic ("The Vercel Clone"). Your job is to produce work that looks like a specific human made it for a specific reason.
7
+
8
+ ## Step 1 — The Context Derivator (Mental Sandbox)
9
+
10
+ Do not write code until you answer these three questions. Be specific.
11
+
12
+ **1. The "World" & Density:**
13
+ Where does this live?
14
+ - *High-Stress/Utility (e.g., Trading, Medical, Admin):* Needs **High Density**. Small type (12-14px / `text-xs` or `text-sm`), tight spacing, visible borders, information-first. Distinctiveness comes from *layout precision*, not decoration.
15
+ - *Low-Stress/Expression (e.g., Portfolio, Marketing, Lifestyle):* Needs **Low Density**. Large type, generous whitespace, novel layouts. Distinctiveness comes from *typographic confidence*.
16
+
17
+ **2. The Constraint:**
18
+ Pick ONE constraint that shapes the design:
19
+ - "Must work in direct sunlight" -> High contrast, no subtle grays.
20
+ - "Used primarily via keyboard" -> Focus states are the primary aesthetic.
21
+ - "Data-heavy dashboard" -> No "cards", use tables/lists only.
22
+ - "Editorial focused" -> No images, typography carries the weight.
23
+
24
+ **3. The "Signature" Interaction:**
25
+ Define ONE non-standard interaction or visual element that defines this app:
26
+ - *Example:* "A persistent sidebar that never scrolls."
27
+ - *Example:* "Headings that are smaller than the body copy but bolder."
28
+ - *Example:* "A monochrome palette where the only color is the cursor."
29
+ - *Example:* "Grid lines are always visible."
30
+
31
+ ---
32
+
33
+ ## Step 2 — The One-Sentence Commit
34
+
35
+ Summarize your direction in one sentence.
36
+ *Example: "A utilitarian, high-density dashboard for data entry, using monospace fonts and visible grid lines, with no shadows or rounded corners."*
37
+
38
+ ---
39
+
40
+ ## Step 3 — Visual Execution Guidelines
41
+
42
+ ### Typography: Use Cultural Reasoning
43
+ Avoid the "AI Default" stack: Inter, Roboto, Open Sans, Poppins, Space Grotesk. Do not just pick a category; reason about its **cultural association**:
44
+ - **Utility & Engineering:** Use a high-quality Monospace (JetBrains Mono, IBM Plex Mono) to evoke documentation, code, and precision.
45
+ - **Authority & History:** Use a transitional or high-contrast Serif (EB Garamond, Libre Baskerville) to evoke editorial, legacy, and trust.
46
+ - **Modernity & Neutrality:** Use a grotesque (Unica77, Public Sans) but *track it tightly* (-0.02em) to evoke mid-century Swiss design.
47
+ - **Warmth & Humanism:** Use a humanist sans (Gill Sans, Optima) to evoke friendliness without the "softness" of rounded fonts.
48
+
49
+ ### Color: Derive from a Core Material
50
+ - **The Core Rule:** Do not use "primary" colors (pure blue, red, green). Use "Muddy" transitions or "Earth" tones (stone, clay, ink, paper).
51
+ - **The Design Logic:** Pick **ONE** material color as your anchor (e.g., `#2D2926` for "Charcoal"). Derive the rest of the palette through relationships:
52
+ - *Surface:* Tint the background with 2-5% of your anchor color.
53
+ - *Borders:* Anchor color at 10-15% opacity.
54
+ - *Contrast:* Anchor color plus a deliberate shift in temperature (e.g., adding 5% blue or amber).
55
+ - **Dark Mode:** Do not use `#000000` or `#121212`. Use a specific deep color derived from your anchor (e.g., deeply desaturated navy or forest green).
56
+
57
+ ### Layout: Fight the "Card" Mentality
58
+ AI defaults to "Cards in a Grid." This is lazy.
59
+ - **Try:** Visible grid lines separating content.
60
+ - **Try:** List views instead of cards.
61
+ - **Try:** Split-screen layouts (50/50).
62
+ - **Try:** Sidebar navigation instead of top-bar.
63
+
64
+ ### Logic: "Does it need to be a card?"
65
+ If the content is just text, it doesn't need a background color, a shadow, and a border radius. It just needs *space*.
66
+
67
+ ### Shadows & Radius
68
+ - **Strict Consistency:** If you use `rounded-lg`, use it everywhere. If you use `rounded-none`, use it everywhere.
69
+ - **Shadows:** Avoid the default distinct "drop shadow". Use subtle, large, diffuse shadows OR harsh, solid, 1px borders (brutalist).
70
+
71
+ ---
72
+
73
+ ## Step 4 — The "Anti-Slop" Checklist
74
+
75
+ Before outputting code, verify:
76
+ 1. **Density Check:** Is the text size 16px+ for a dashboard? -> **Fix it.** (Use 13-14px).
77
+ 2. **Whitespace Check:** Am I using `py-24` just to fill space? -> **Fix it.**
78
+ 3. **Color Check:** Is the primary color "Blurple" or "Teal"? -> **Change it.**
79
+ 4. **Font Check:** Is it Inter or Space Grotesk? -> **Change it.**
80
+ 5. **Effect Check:** Am I using Glassmorphism (backdrop-blur)? -> **Remove it.** (Unless explicitly requested).
81
+ 6. **Animation Check:** distinct "staggered fade-in"? -> **Remove it.** (Make it instant or a single group fade).
82
+ 7. **The Transplant Test:** Could this entire UI be transplanted onto a different product without it feeling generic? If it feels like "The Vercel UI," it **fails.**
83
+
84
+ ---
85
+
86
+ ## Implementation Standards
87
+
88
+ - **React Architecture:** Functional components with TypeScript. Use semantic tags (`<header>`, `<main>`, etc.) within your JSX components.
89
+ - **Tailwind Palette:** Use `tailwind.config.ts` for theme extensions. Define logic-based colors (e.g., `surface-primary`, `text-dimmed`) derived from your anchor color.
90
+ - **Accessibility & Motion:**
91
+ - UI must support `prefers-reduced-motion` for all transitions.
92
+ - Interactive elements must satisfy a minimum **44x44px touch target**.
93
+ - Explicit focus states (`focus-visible`) are a requirement, not an afterthought.
94
+ - **Performance:** For fonts, ensure `font-display: swap` is used. Use `next/font` or similar for optimized loading.