achira-wf 3.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 (229) hide show
  1. package/.achira/ARCHITECTURE.md +296 -0
  2. package/.achira/core/agents/backend-specialist.md +263 -0
  3. package/.achira/core/agents/code-archaeologist.md +106 -0
  4. package/.achira/core/agents/database-architect.md +226 -0
  5. package/.achira/core/agents/debugger.md +225 -0
  6. package/.achira/core/agents/devops-engineer.md +242 -0
  7. package/.achira/core/agents/documentation-writer.md +104 -0
  8. package/.achira/core/agents/explorer-agent.md +73 -0
  9. package/.achira/core/agents/frontend-specialist.md +593 -0
  10. package/.achira/core/agents/game-developer.md +162 -0
  11. package/.achira/core/agents/mobile-developer.md +377 -0
  12. package/.achira/core/agents/orchestrator.md +416 -0
  13. package/.achira/core/agents/penetration-tester.md +188 -0
  14. package/.achira/core/agents/performance-optimizer.md +187 -0
  15. package/.achira/core/agents/product-manager.md +112 -0
  16. package/.achira/core/agents/product-owner.md +95 -0
  17. package/.achira/core/agents/project-planner.md +413 -0
  18. package/.achira/core/agents/qa-automation-engineer.md +103 -0
  19. package/.achira/core/agents/security-auditor.md +170 -0
  20. package/.achira/core/agents/seo-specialist.md +111 -0
  21. package/.achira/core/agents/test-engineer.md +158 -0
  22. package/.achira/core/mcp_config.json +24 -0
  23. package/.achira/core/shared/ui-ux-pro-max/data/charts.csv +26 -0
  24. package/.achira/core/shared/ui-ux-pro-max/data/colors.csv +97 -0
  25. package/.achira/core/shared/ui-ux-pro-max/data/icons.csv +101 -0
  26. package/.achira/core/shared/ui-ux-pro-max/data/landing.csv +31 -0
  27. package/.achira/core/shared/ui-ux-pro-max/data/products.csv +97 -0
  28. package/.achira/core/shared/ui-ux-pro-max/data/prompts.csv +24 -0
  29. package/.achira/core/shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  30. package/.achira/core/shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  31. package/.achira/core/shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  32. package/.achira/core/shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  33. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  34. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  35. package/.achira/core/shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  36. package/.achira/core/shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  37. package/.achira/core/shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  38. package/.achira/core/shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  39. package/.achira/core/shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  40. package/.achira/core/shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  41. package/.achira/core/shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  42. package/.achira/core/shared/ui-ux-pro-max/data/styles.csv +59 -0
  43. package/.achira/core/shared/ui-ux-pro-max/data/typography.csv +58 -0
  44. package/.achira/core/shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  45. package/.achira/core/shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  46. package/.achira/core/shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  47. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  48. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  49. package/.achira/core/shared/ui-ux-pro-max/scripts/__pycache__/generate_theme.cpython-314.pyc +0 -0
  50. package/.achira/core/shared/ui-ux-pro-max/scripts/core.py +258 -0
  51. package/.achira/core/shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  52. package/.achira/core/shared/ui-ux-pro-max/scripts/generate_theme.py +99 -0
  53. package/.achira/core/shared/ui-ux-pro-max/scripts/search.py +106 -0
  54. package/.achira/core/skills/api-patterns/SKILL.md +81 -0
  55. package/.achira/core/skills/api-patterns/api-style.md +42 -0
  56. package/.achira/core/skills/api-patterns/auth.md +24 -0
  57. package/.achira/core/skills/api-patterns/documentation.md +26 -0
  58. package/.achira/core/skills/api-patterns/graphql.md +41 -0
  59. package/.achira/core/skills/api-patterns/rate-limiting.md +31 -0
  60. package/.achira/core/skills/api-patterns/response.md +37 -0
  61. package/.achira/core/skills/api-patterns/rest.md +40 -0
  62. package/.achira/core/skills/api-patterns/scripts/api_validator.py +211 -0
  63. package/.achira/core/skills/api-patterns/security-testing.md +122 -0
  64. package/.achira/core/skills/api-patterns/trpc.md +41 -0
  65. package/.achira/core/skills/api-patterns/versioning.md +22 -0
  66. package/.achira/core/skills/app-builder/SKILL.md +98 -0
  67. package/.achira/core/skills/app-builder/agent-coordination.md +71 -0
  68. package/.achira/core/skills/app-builder/feature-building.md +53 -0
  69. package/.achira/core/skills/app-builder/project-detection.md +34 -0
  70. package/.achira/core/skills/app-builder/scaffolding.md +118 -0
  71. package/.achira/core/skills/app-builder/tech-stack.md +40 -0
  72. package/.achira/core/skills/app-builder/templates/SKILL.md +39 -0
  73. package/.achira/core/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  74. package/.achira/core/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  75. package/.achira/core/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  76. package/.achira/core/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  77. package/.achira/core/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  78. package/.achira/core/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  79. package/.achira/core/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  80. package/.achira/core/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  81. package/.achira/core/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  82. package/.achira/core/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  83. package/.achira/core/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  84. package/.achira/core/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  85. package/.achira/core/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  86. package/.achira/core/skills/architecture/SKILL.md +55 -0
  87. package/.achira/core/skills/architecture/context-discovery.md +43 -0
  88. package/.achira/core/skills/architecture/examples.md +94 -0
  89. package/.achira/core/skills/architecture/pattern-selection.md +68 -0
  90. package/.achira/core/skills/architecture/patterns-reference.md +50 -0
  91. package/.achira/core/skills/architecture/trade-off-analysis.md +77 -0
  92. package/.achira/core/skills/bash-linux/SKILL.md +199 -0
  93. package/.achira/core/skills/behavioral-modes/SKILL.md +242 -0
  94. package/.achira/core/skills/brainstorming/SKILL.md +163 -0
  95. package/.achira/core/skills/brainstorming/dynamic-questioning.md +350 -0
  96. package/.achira/core/skills/clean-code/SKILL.md +201 -0
  97. package/.achira/core/skills/code-review-checklist/SKILL.md +109 -0
  98. package/.achira/core/skills/database-design/SKILL.md +52 -0
  99. package/.achira/core/skills/database-design/database-selection.md +43 -0
  100. package/.achira/core/skills/database-design/indexing.md +39 -0
  101. package/.achira/core/skills/database-design/migrations.md +48 -0
  102. package/.achira/core/skills/database-design/optimization.md +36 -0
  103. package/.achira/core/skills/database-design/orm-selection.md +30 -0
  104. package/.achira/core/skills/database-design/schema-design.md +56 -0
  105. package/.achira/core/skills/database-design/scripts/schema_validator.py +172 -0
  106. package/.achira/core/skills/deployment-procedures/SKILL.md +241 -0
  107. package/.achira/core/skills/doc.md +177 -0
  108. package/.achira/core/skills/documentation-templates/SKILL.md +194 -0
  109. package/.achira/core/skills/frontend-design/SKILL.md +418 -0
  110. package/.achira/core/skills/frontend-design/animation-guide.md +331 -0
  111. package/.achira/core/skills/frontend-design/color-system.md +311 -0
  112. package/.achira/core/skills/frontend-design/decision-trees.md +418 -0
  113. package/.achira/core/skills/frontend-design/motion-graphics.md +306 -0
  114. package/.achira/core/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  115. package/.achira/core/skills/frontend-design/scripts/ux_audit.py +722 -0
  116. package/.achira/core/skills/frontend-design/typography-system.md +345 -0
  117. package/.achira/core/skills/frontend-design/ux-psychology.md +1116 -0
  118. package/.achira/core/skills/frontend-design/visual-effects.md +383 -0
  119. package/.achira/core/skills/game-development/2d-games/SKILL.md +119 -0
  120. package/.achira/core/skills/game-development/3d-games/SKILL.md +135 -0
  121. package/.achira/core/skills/game-development/SKILL.md +167 -0
  122. package/.achira/core/skills/game-development/game-art/SKILL.md +185 -0
  123. package/.achira/core/skills/game-development/game-audio/SKILL.md +190 -0
  124. package/.achira/core/skills/game-development/game-design/SKILL.md +129 -0
  125. package/.achira/core/skills/game-development/mobile-games/SKILL.md +108 -0
  126. package/.achira/core/skills/game-development/multiplayer/SKILL.md +132 -0
  127. package/.achira/core/skills/game-development/pc-games/SKILL.md +144 -0
  128. package/.achira/core/skills/game-development/vr-ar/SKILL.md +123 -0
  129. package/.achira/core/skills/game-development/web-games/SKILL.md +150 -0
  130. package/.achira/core/skills/geo-fundamentals/SKILL.md +156 -0
  131. package/.achira/core/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  132. package/.achira/core/skills/i18n-localization/SKILL.md +154 -0
  133. package/.achira/core/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  134. package/.achira/core/skills/intelligent-routing/SKILL.md +335 -0
  135. package/.achira/core/skills/lint-and-validate/SKILL.md +45 -0
  136. package/.achira/core/skills/lint-and-validate/scripts/lint_runner.py +184 -0
  137. package/.achira/core/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  138. package/.achira/core/skills/mcp-builder/SKILL.md +176 -0
  139. package/.achira/core/skills/mobile-design/SKILL.md +394 -0
  140. package/.achira/core/skills/mobile-design/decision-trees.md +516 -0
  141. package/.achira/core/skills/mobile-design/mobile-backend.md +491 -0
  142. package/.achira/core/skills/mobile-design/mobile-color-system.md +420 -0
  143. package/.achira/core/skills/mobile-design/mobile-debugging.md +122 -0
  144. package/.achira/core/skills/mobile-design/mobile-design-thinking.md +357 -0
  145. package/.achira/core/skills/mobile-design/mobile-navigation.md +458 -0
  146. package/.achira/core/skills/mobile-design/mobile-performance.md +767 -0
  147. package/.achira/core/skills/mobile-design/mobile-testing.md +356 -0
  148. package/.achira/core/skills/mobile-design/mobile-typography.md +433 -0
  149. package/.achira/core/skills/mobile-design/platform-android.md +666 -0
  150. package/.achira/core/skills/mobile-design/platform-ios.md +561 -0
  151. package/.achira/core/skills/mobile-design/scripts/mobile_audit.py +670 -0
  152. package/.achira/core/skills/mobile-design/touch-psychology.md +537 -0
  153. package/.achira/core/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
  154. package/.achira/core/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
  155. package/.achira/core/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
  156. package/.achira/core/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
  157. package/.achira/core/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
  158. package/.achira/core/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
  159. package/.achira/core/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
  160. package/.achira/core/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
  161. package/.achira/core/skills/nextjs-react-expert/SKILL.md +286 -0
  162. package/.achira/core/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
  163. package/.achira/core/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
  164. package/.achira/core/skills/nodejs-best-practices/SKILL.md +333 -0
  165. package/.achira/core/skills/parallel-agents/SKILL.md +175 -0
  166. package/.achira/core/skills/performance-profiling/SKILL.md +143 -0
  167. package/.achira/core/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  168. package/.achira/core/skills/plan-writing/SKILL.md +152 -0
  169. package/.achira/core/skills/powershell-windows/SKILL.md +167 -0
  170. package/.achira/core/skills/project-setup/SKILL.md +291 -0
  171. package/.achira/core/skills/python-patterns/SKILL.md +441 -0
  172. package/.achira/core/skills/red-team-tactics/SKILL.md +199 -0
  173. package/.achira/core/skills/rust-pro/SKILL.md +176 -0
  174. package/.achira/core/skills/seo-fundamentals/SKILL.md +129 -0
  175. package/.achira/core/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  176. package/.achira/core/skills/server-management/SKILL.md +161 -0
  177. package/.achira/core/skills/systematic-debugging/SKILL.md +109 -0
  178. package/.achira/core/skills/tailwind-patterns/SKILL.md +269 -0
  179. package/.achira/core/skills/tdd-workflow/SKILL.md +149 -0
  180. package/.achira/core/skills/testing-patterns/SKILL.md +178 -0
  181. package/.achira/core/skills/testing-patterns/scripts/test_runner.py +219 -0
  182. package/.achira/core/skills/vulnerability-scanner/SKILL.md +276 -0
  183. package/.achira/core/skills/vulnerability-scanner/checklists.md +121 -0
  184. package/.achira/core/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  185. package/.achira/core/skills/web-design-guidelines/SKILL.md +57 -0
  186. package/.achira/core/skills/webapp-testing/SKILL.md +187 -0
  187. package/.achira/core/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  188. package/.achira/rules/GEMINI.md +273 -0
  189. package/.achira/scripts/__pycache__/checklist.cpython-314.pyc +0 -0
  190. package/.achira/scripts/__pycache__/shared_utils.cpython-314.pyc +0 -0
  191. package/.achira/scripts/__pycache__/verify_all.cpython-314.pyc +0 -0
  192. package/.achira/scripts/auto_preview.py +148 -0
  193. package/.achira/scripts/checklist.py +193 -0
  194. package/.achira/scripts/session_manager.py +120 -0
  195. package/.achira/scripts/shared_utils.py +64 -0
  196. package/.achira/scripts/verify_all.py +304 -0
  197. package/.achira/workflows/brainstorm.md +113 -0
  198. package/.achira/workflows/create.md +59 -0
  199. package/.achira/workflows/debug.md +103 -0
  200. package/.achira/workflows/deploy.md +176 -0
  201. package/.achira/workflows/enhance.md +63 -0
  202. package/.achira/workflows/html+js+css.md +363 -0
  203. package/.achira/workflows/next.js.md +316 -0
  204. package/.achira/workflows/orchestrate.md +237 -0
  205. package/.achira/workflows/plan.md +89 -0
  206. package/.achira/workflows/preview.md +81 -0
  207. package/.achira/workflows/react+vite.md +280 -0
  208. package/.achira/workflows/registry.json +35 -0
  209. package/.achira/workflows/status.md +86 -0
  210. package/.achira/workflows/test.md +144 -0
  211. package/.achira/workflows/ui-ux-pro-max.md +296 -0
  212. package/.agent/workflows/brainstorm.md +113 -0
  213. package/.agent/workflows/create.md +59 -0
  214. package/.agent/workflows/debug.md +103 -0
  215. package/.agent/workflows/deploy.md +176 -0
  216. package/.agent/workflows/enhance.md +63 -0
  217. package/.agent/workflows/html+js+css.md +363 -0
  218. package/.agent/workflows/next.js.md +316 -0
  219. package/.agent/workflows/orchestrate.md +237 -0
  220. package/.agent/workflows/plan.md +89 -0
  221. package/.agent/workflows/preview.md +81 -0
  222. package/.agent/workflows/react+vite.md +280 -0
  223. package/.agent/workflows/status.md +86 -0
  224. package/.agent/workflows/test.md +144 -0
  225. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  226. package/LICENSE +21 -0
  227. package/README.md +110 -0
  228. package/cli.js +293 -0
  229. package/package.json +48 -0
package/cli.js ADDED
@@ -0,0 +1,293 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Command } from "commander";
4
+ import chalk from "chalk";
5
+ import fs from "fs-extra";
6
+ import path from "path";
7
+ import { fileURLToPath } from "url";
8
+
9
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
10
+ const pkg = fs.readJsonSync(path.join(__dirname, "package.json"));
11
+
12
+ const ACHIRA_DIR = ".achira";
13
+ const REGISTRY_PATH = path.join(ACHIRA_DIR, "workflows", "registry.json");
14
+
15
+ const program = new Command();
16
+
17
+ program
18
+ .name("achira-wf")
19
+ .description(
20
+ "Achira Workflow OS — Install agents, skills, and project scaffolds into any folder"
21
+ )
22
+ .version(pkg.version);
23
+
24
+ // ─── achira-wf init ───────────────────────────────────────────────────────────
25
+
26
+ program
27
+ .command("init")
28
+ .description("Install .achira/ (agents, skills, workflows, scripts) into the current directory")
29
+ .option("-f, --force", "Overwrite existing .achira/ directory")
30
+ .action(async (options) => {
31
+ const target = process.cwd();
32
+ const src = path.join(__dirname, ACHIRA_DIR);
33
+ const dest = path.join(target, ACHIRA_DIR);
34
+
35
+ console.log(chalk.cyan("\n achira-wf init\n"));
36
+ console.log(chalk.gray(` Target: ${target}\n`));
37
+
38
+ if (!fs.existsSync(src)) {
39
+ console.log(chalk.red(" ✖ Source .achira/ not found in package.\n"));
40
+ process.exit(1);
41
+ }
42
+
43
+ if (fs.existsSync(dest) && !options.force) {
44
+ console.log(chalk.yellow(" ⚠ .achira/ already exists at target."));
45
+ console.log(chalk.yellow(` Use ${chalk.bold("--force")} to overwrite.\n`));
46
+ process.exit(1);
47
+ }
48
+
49
+ // 1. Install .achira/
50
+ try {
51
+ await fs.ensureDir(dest);
52
+ await fs.copy(src, dest, { overwrite: true });
53
+ console.log(chalk.green(" ✔ .achira/ installed\n"));
54
+ } catch (err) {
55
+ console.log(chalk.red(` ✖ Failed: ${err.message}\n`));
56
+ process.exit(1);
57
+ }
58
+
59
+ // 2. Sync .agent/workflows/ for IDE slash command discovery
60
+ try {
61
+ const agentWfDir = path.join(target, ".agent", "workflows");
62
+ await fs.ensureDir(agentWfDir);
63
+ const wfSrc = path.join(dest, "workflows");
64
+ const mdFiles = (await fs.readdir(wfSrc)).filter((f) => f.endsWith(".md"));
65
+ for (const file of mdFiles) {
66
+ await fs.copy(path.join(wfSrc, file), path.join(agentWfDir, file), { overwrite: true });
67
+ }
68
+ console.log(chalk.green(` ✔ Synced ${mdFiles.length} workflows → .agent/workflows/\n`));
69
+ } catch (err) {
70
+ console.log(chalk.yellow(` ⚠ Could not sync .agent/workflows/: ${err.message}\n`));
71
+ }
72
+
73
+ // 3. Print registry summary
74
+ const registryFile = path.join(dest, "workflows", "registry.json");
75
+ if (fs.existsSync(registryFile)) {
76
+ try {
77
+ const registry = fs.readJsonSync(registryFile);
78
+ const engineMajor = parseInt(pkg.version.split(".")[0], 10);
79
+ const registryEngine = registry.engine || "unknown";
80
+ const registryMajor = parseInt(registryEngine.split(".")[0], 10);
81
+ if (engineMajor !== registryMajor) {
82
+ console.log(chalk.yellow(` ⚠ Engine mismatch: CLI v${pkg.version} / registry engine ${registryEngine}\n`));
83
+ }
84
+ console.log(chalk.white(" Achira Workflow OS initialized.\n"));
85
+ console.log(chalk.cyan(" Project Scaffolds:\n"));
86
+ for (const [key, val] of Object.entries(registry.templates || {})) {
87
+ console.log(chalk.white(` achira-wf create ${key}`) + chalk.gray(` — ${val.description}`));
88
+ }
89
+ console.log(chalk.cyan("\n Slash Commands:\n"));
90
+ for (const [key, val] of Object.entries(registry.commands || {})) {
91
+ console.log(chalk.white(` /${key}`) + chalk.gray(` — ${val.description}`));
92
+ }
93
+ console.log("");
94
+ } catch {
95
+ console.log(chalk.yellow(" ⚠ Could not parse registry.json\n"));
96
+ }
97
+ }
98
+ });
99
+
100
+ // ─── achira-wf create <template> ─────────────────────────────────────────────
101
+
102
+ program
103
+ .command("create <template>")
104
+ .description("Scaffold a project from a registered template (react, next, html)")
105
+ .action((template) => {
106
+ const registryFile = path.join(process.cwd(), REGISTRY_PATH);
107
+
108
+ if (!fs.existsSync(registryFile)) {
109
+ console.log(
110
+ chalk.red(
111
+ "\n ✖ No .achira/ found. Run `achira-wf init` first.\n"
112
+ )
113
+ );
114
+ process.exit(1);
115
+ }
116
+
117
+ let registry;
118
+ try {
119
+ registry = fs.readJsonSync(registryFile);
120
+ } catch {
121
+ console.log(chalk.red("\n ✖ Could not parse registry.json\n"));
122
+ process.exit(1);
123
+ }
124
+
125
+ const entry = registry.templates?.[template];
126
+ if (!entry) {
127
+ const available = Object.keys(registry.templates || {}).join(", ");
128
+ console.log(
129
+ chalk.red(`\n ✖ Unknown template: "${template}"`)
130
+ );
131
+ console.log(chalk.gray(` Available: ${available}\n`));
132
+ process.exit(1);
133
+ }
134
+
135
+ const workflowPath = path.join(
136
+ process.cwd(),
137
+ ACHIRA_DIR,
138
+ "workflows",
139
+ entry.workflow
140
+ );
141
+
142
+ if (!fs.existsSync(workflowPath)) {
143
+ console.log(
144
+ chalk.red(`\n ✖ Workflow file not found: ${entry.workflow}\n`)
145
+ );
146
+ process.exit(1);
147
+ }
148
+
149
+ console.log(chalk.cyan(`\n achira-wf create ${template}\n`));
150
+ console.log(chalk.green(` ✔ Template: ${entry.description}`));
151
+ console.log(
152
+ chalk.green(` ✔ Workflow: .achira/workflows/${entry.workflow}`)
153
+ );
154
+ console.log(
155
+ chalk.white(
156
+ `\n → Open the workflow file and follow the steps, or use the /create slash command.\n`
157
+ )
158
+ );
159
+ });
160
+
161
+ // ─── achira-wf list ──────────────────────────────────────────────────────────
162
+
163
+ program
164
+ .command("list")
165
+ .description("List all available workflows and templates")
166
+ .action(() => {
167
+ const registryFile = path.join(process.cwd(), REGISTRY_PATH);
168
+
169
+ if (!fs.existsSync(registryFile)) {
170
+ console.log(
171
+ chalk.red(
172
+ "\n ✖ No .achira/ found. Run `achira-wf init` first.\n"
173
+ )
174
+ );
175
+ process.exit(1);
176
+ }
177
+
178
+ let registry;
179
+ try {
180
+ registry = fs.readJsonSync(registryFile);
181
+ } catch {
182
+ console.log(chalk.red("\n ✖ Could not parse registry.json\n"));
183
+ process.exit(1);
184
+ }
185
+
186
+ console.log(chalk.cyan("\n Achira Workflow OS\n"));
187
+ console.log(
188
+ chalk.gray(` Engine: ${registry.engine} Version: ${registry.version}\n`)
189
+ );
190
+
191
+ console.log(chalk.cyan(" Project Scaffolds:\n"));
192
+ for (const [key, val] of Object.entries(registry.templates || {})) {
193
+ console.log(
194
+ chalk.white(` achira-wf create ${key}`) +
195
+ chalk.gray(` — ${val.description}`)
196
+ );
197
+ }
198
+
199
+ console.log(chalk.cyan("\n Slash Commands:\n"));
200
+ for (const [key, val] of Object.entries(registry.commands || {})) {
201
+ console.log(
202
+ chalk.white(` /${key}`) + chalk.gray(` — ${val.description}`)
203
+ );
204
+ }
205
+ console.log("");
206
+ });
207
+
208
+ // ─── achira-wf doctor ────────────────────────────────────────────────────────
209
+
210
+ program
211
+ .command("doctor")
212
+ .description("Validate .achira/ installation integrity")
213
+ .action(() => {
214
+ const base = path.join(process.cwd(), ACHIRA_DIR);
215
+ console.log(chalk.cyan("\n achira-wf doctor\n"));
216
+
217
+ const checks = [
218
+ { label: ".achira/", path: base },
219
+ { label: "core/agents/", path: path.join(base, "core", "agents") },
220
+ { label: "core/skills/", path: path.join(base, "core", "skills") },
221
+ { label: "core/shared/", path: path.join(base, "core", "shared") },
222
+ { label: "workflows/", path: path.join(base, "workflows") },
223
+ {
224
+ label: "workflows/registry.json",
225
+ path: path.join(base, "workflows", "registry.json"),
226
+ },
227
+ { label: "scripts/", path: path.join(base, "scripts") },
228
+ { label: "rules/GEMINI.md", path: path.join(base, "rules", "GEMINI.md") },
229
+ { label: "ARCHITECTURE.md", path: path.join(base, "ARCHITECTURE.md") },
230
+ ];
231
+
232
+ let allOk = true;
233
+ for (const check of checks) {
234
+ if (fs.existsSync(check.path)) {
235
+ console.log(chalk.green(` ✔ ${check.label}`));
236
+ } else {
237
+ console.log(chalk.red(` ✖ ${check.label} — MISSING`));
238
+ allOk = false;
239
+ }
240
+ }
241
+
242
+ // Count agents and skills
243
+ const agentsDir = path.join(base, "core", "agents");
244
+ const skillsDir = path.join(base, "core", "skills");
245
+ const workflowsDir = path.join(base, "workflows");
246
+
247
+ if (fs.existsSync(agentsDir)) {
248
+ const agentCount = fs
249
+ .readdirSync(agentsDir)
250
+ .filter((f) => f.endsWith(".md")).length;
251
+ console.log(chalk.gray(`\n Agents: ${agentCount}`));
252
+ }
253
+ if (fs.existsSync(skillsDir)) {
254
+ const skillCount = fs
255
+ .readdirSync(skillsDir)
256
+ .filter((f) => fs.statSync(path.join(skillsDir, f)).isDirectory()).length;
257
+ console.log(chalk.gray(` Skills: ${skillCount}`));
258
+ }
259
+ if (fs.existsSync(workflowsDir)) {
260
+ const wfCount = fs
261
+ .readdirSync(workflowsDir)
262
+ .filter((f) => f.endsWith(".md")).length;
263
+ console.log(chalk.gray(` Workflows: ${wfCount}`));
264
+ }
265
+
266
+ // Registry engine check
267
+ const registryFile = path.join(base, "workflows", "registry.json");
268
+ if (fs.existsSync(registryFile)) {
269
+ try {
270
+ const registry = fs.readJsonSync(registryFile);
271
+ console.log(
272
+ chalk.gray(
273
+ ` Registry: engine ${registry.engine}, version ${registry.version}`
274
+ )
275
+ );
276
+ } catch {
277
+ console.log(chalk.yellow(" ⚠ registry.json parse error"));
278
+ allOk = false;
279
+ }
280
+ }
281
+
282
+ console.log("");
283
+ if (allOk) {
284
+ console.log(chalk.green(" All checks passed. System healthy.\n"));
285
+ } else {
286
+ console.log(
287
+ chalk.red(" Some checks failed. Run `achira-wf init` to repair.\n")
288
+ );
289
+ process.exit(1);
290
+ }
291
+ });
292
+
293
+ program.parse();
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "achira-wf",
3
+ "version": "3.1.0",
4
+ "description": "Achira Workflow OS — AI-driven development ecosystem with 20 agents, 38 skills, and project scaffolds.",
5
+ "main": "cli.js",
6
+ "bin": {
7
+ "achira-wf": "cli.js"
8
+ },
9
+ "type": "module",
10
+ "keywords": [
11
+ "ai",
12
+ "agents",
13
+ "workflow",
14
+ "scaffold",
15
+ "react",
16
+ "nextjs",
17
+ "vite",
18
+ "developer-tools",
19
+ "cli",
20
+ "llm",
21
+ "gemini",
22
+ "agentic",
23
+ "ai-workflow",
24
+ "code-generation"
25
+ ],
26
+ "author": "Achira",
27
+ "license": "MIT",
28
+ "homepage": "https://github.com/AchiraStudio/achira-workflow-os#readme",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/AchiraStudio/achira-workflow-os.git"
32
+ },
33
+ "bugs": {
34
+ "url": "https://github.com/AchiraStudio/achira-workflow-os/issues"
35
+ },
36
+ "files": [
37
+ ".achira",
38
+ ".agent",
39
+ "cli.js",
40
+ "README.md",
41
+ "LICENSE"
42
+ ],
43
+ "dependencies": {
44
+ "chalk": "^5.3.0",
45
+ "commander": "^11.1.0",
46
+ "fs-extra": "^11.2.0"
47
+ }
48
+ }