@leejungkiin/awkit 1.6.4 → 1.6.6
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.
- package/README.md +121 -130
- package/bin/awk.js +70 -5
- package/bin/claude-generators.js +2 -2
- package/bin/cursor-generators.js +256 -0
- package/core/CURSOR.md +47 -0
- package/core/CURSOR_DETAILED.md +102 -0
- package/package.json +2 -2
- package/scripts/automation-gate.js +18 -0
- package/scripts/obsidian-sync.js +494 -0
- package/skills/app-store-screenshots/SKILL.md +86 -0
- package/skills/app-store-screenshots/resources/mockup.png +0 -0
- package/skills/aseprite-artist/SKILL.md +346 -0
- package/skills/aseprite-artist/resources/examples.md +188 -0
- package/skills/aseprite-artist/resources/palettes.md +133 -0
- package/skills/pixel-art-creator/SKILL.md +89 -0
- package/skills/semantic-qa-agent/SKILL.md +68 -0
- package/skills/symphony-enforcer/examples/three-phase.md +19 -11
- package/templates/project-identity/android.json +2 -0
- package/templates/project-identity/backend-nestjs.json +2 -0
- package/templates/project-identity/expo.json +2 -0
- package/templates/project-identity/ios.json +2 -0
- package/templates/project-identity/web-nextjs.json +2 -0
package/README.md
CHANGED
|
@@ -1,41 +1,42 @@
|
|
|
1
|
-
# AWKit — Antigravity Workflow Kit
|
|
1
|
+
# AWKit — Antigravity Workflow Kit
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Antigravity v12.5 · npm package v1.6.5 · Single Source of Truth · Symphony-first · Mindful execution
|
|
4
4
|
|
|
5
|
-
AWKit
|
|
6
|
-
|
|
5
|
+
AWKit is a professional AI-agent orchestration framework. This repository is the single source of truth for workflows, skills, core rules (GEMINI.md), and installation tooling (no more scattered configs across multiple repos).
|
|
6
|
+
|
|
7
|
+
AWKit focuses on predictable execution: task management via Symphony, optional Trello sync and Telegram notifications, plus mindful checkpoints that help agents (and humans) stop at the right time and avoid over-optimizing.
|
|
7
8
|
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
##
|
|
11
|
+
## Core Principles
|
|
11
12
|
|
|
12
|
-
AWKit (Antigravity v12+)
|
|
13
|
+
AWKit (Antigravity v12+) enforces a small set of non-negotiable principles to keep AI work safe and effective:
|
|
13
14
|
|
|
14
|
-
1. **Anti-sycophancy
|
|
15
|
-
2. **Search
|
|
16
|
-
3. **Completion
|
|
17
|
-
4. **
|
|
18
|
-
5. **3-
|
|
19
|
-
6. **Scope
|
|
20
|
-
7. **Boil-the-
|
|
21
|
-
8. **Safety
|
|
22
|
-
9. **Mindful
|
|
15
|
+
1. **Anti-sycophancy**: push back when an approach has red flags; do not agree blindly.
|
|
16
|
+
2. **Search before building (3-layer)**: check NeuralMemory/codebase first → then standard libraries/SDKs → only write new code as a last resort.
|
|
17
|
+
3. **Completion status protocol**: use one of `DONE`, `DONE_WITH_CONCERNS`, `BLOCKED`, `NEEDS_CONTEXT`.
|
|
18
|
+
4. **Decision principles**: Complete > Shortcuts, Evidence > Assumptions, Standard > Custom, Explicit > Implicit, Test > Trust, Small > Big.
|
|
19
|
+
5. **3-strike escalation**: after 3 failed attempts at fixing the same issue, stop and report context for a decision.
|
|
20
|
+
6. **Scope freeze for debugging**: no unrelated edits, no refactors; focus on root cause.
|
|
21
|
+
7. **"Boil-the-lake" checklist before DONE**: error handling, edge cases, logging, cleanup, input validation, etc.
|
|
22
|
+
8. **Safety guardrails**: block dangerous commands by default; require double confirmation.
|
|
23
|
+
9. **Mindful execution (v12.5+)**: iteration counter, scope guard, milestone rest.
|
|
23
24
|
|
|
24
25
|
---
|
|
25
26
|
|
|
26
|
-
##
|
|
27
|
+
## Quick Start
|
|
27
28
|
|
|
28
|
-
###
|
|
29
|
+
### Install (3 steps)
|
|
29
30
|
|
|
30
31
|
```bash
|
|
31
|
-
# 1
|
|
32
|
+
# 1) AWKit Core (CLI + workflows + skills)
|
|
32
33
|
npm install -g @leejungkiin/awkit
|
|
33
34
|
awkit install
|
|
34
35
|
|
|
35
|
-
# 2
|
|
36
|
+
# 2) Symphony (Task Management & Multi-Agent Orchestration)
|
|
36
37
|
npm install -g @leejungkiin/awkit-symphony
|
|
37
38
|
|
|
38
|
-
# 3
|
|
39
|
+
# 3) Optional: NeuralMemory (AI Memory Engine — requires Python >= 3.11)
|
|
39
40
|
pip install neural-memory
|
|
40
41
|
nmem init
|
|
41
42
|
|
|
@@ -45,163 +46,162 @@ symphony --version
|
|
|
45
46
|
nmem --version
|
|
46
47
|
```
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
Notes:
|
|
50
|
+
|
|
51
|
+
- `awkit install` installs only the core runtime profile for the active platform by default (keeps context lean).
|
|
52
|
+
- Enable domain-heavy packs later via `awkit enable-pack <name>`.
|
|
53
|
+
- Use `awkit install --all` only if you explicitly want to regenerate every supported platform.
|
|
51
54
|
|
|
55
|
+
---
|
|
52
56
|
|
|
53
|
-
##
|
|
57
|
+
## CLI Commands
|
|
54
58
|
|
|
55
59
|
| Command | Description |
|
|
56
60
|
|---------|-------------|
|
|
57
|
-
| `awkit install` |
|
|
58
|
-
| `awkit install --all` |
|
|
59
|
-
| `awkit update` | Update
|
|
60
|
-
| `awkit init` |
|
|
61
|
+
| `awkit install` | Install AWKit core runtime to the active platform |
|
|
62
|
+
| `awkit install --all` | Install AWKit core runtime for all supported platforms |
|
|
63
|
+
| `awkit update` | Update to the latest version |
|
|
64
|
+
| `awkit init` | Initialize a new project (creates `.project-identity`, `CODEBASE.md`, etc.) |
|
|
61
65
|
| `awkit sync` | Full sync: harvest + install (one shot) |
|
|
62
|
-
| `awkit status` |
|
|
63
|
-
| `awkit harvest` | Pull
|
|
64
|
-
| `awkit doctor` |
|
|
65
|
-
| `awkit
|
|
66
|
-
| `awkit
|
|
67
|
-
| `awkit
|
|
68
|
-
| `awkit
|
|
69
|
-
| `awkit tg
|
|
70
|
-
| `awkit
|
|
66
|
+
| `awkit status` | Compare repo vs installed runtime (diff view) |
|
|
67
|
+
| `awkit harvest` | Pull from `~/.gemini/antigravity/` back into this repo |
|
|
68
|
+
| `awkit doctor` | Health checks for installation |
|
|
69
|
+
| `awkit list-packs` | List optional skill packs |
|
|
70
|
+
| `awkit enable-pack <name>` | Enable a skill pack |
|
|
71
|
+
| `awkit disable-pack <name>` | Disable a skill pack |
|
|
72
|
+
| `awkit gate ...` | Execute gated automation (git/trello/telegram) |
|
|
73
|
+
| `awkit tg setup` | Configure Telegram bot token, chat id, and topic |
|
|
74
|
+
| `awkit tg send <msg>` | Send a Telegram message |
|
|
75
|
+
| `awkit version` | Print version |
|
|
71
76
|
|
|
72
77
|
### Typical Workflow
|
|
73
78
|
|
|
74
79
|
```bash
|
|
75
|
-
# 1
|
|
80
|
+
# 1) Check what's out of sync
|
|
76
81
|
awkit status
|
|
77
82
|
|
|
78
|
-
# 2a
|
|
83
|
+
# 2a) You edited in ~/.gemini/antigravity/ → pull back to repo
|
|
79
84
|
awkit harvest
|
|
80
85
|
|
|
81
|
-
# 2b
|
|
86
|
+
# 2b) You edited in repo → deploy to active runtime
|
|
82
87
|
awkit install
|
|
83
88
|
|
|
84
|
-
#
|
|
85
|
-
awkit install --all
|
|
86
|
-
|
|
87
|
-
# 2c. Both directions (full round-trip)
|
|
89
|
+
# 2c) Both directions (full round-trip)
|
|
88
90
|
awkit sync
|
|
89
91
|
|
|
90
|
-
# 3
|
|
91
|
-
|
|
92
|
+
# 3) Commit safely (gated)
|
|
93
|
+
awkit gate git auto "chore: sync AWKit snapshot"
|
|
92
94
|
```
|
|
93
95
|
|
|
96
|
+
---
|
|
94
97
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
├──
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
├──
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
│ ├── quality/ audit, performance, ux...
|
|
109
|
-
│ ├── ui/ visualize, design-to-ui...
|
|
110
|
-
│ ├── ads/ ads-audit, optimize...
|
|
111
|
-
│ ├── mobile/ maestro, turbo-build...
|
|
112
|
-
│ ├── expert/ planExpert, codeExpert...
|
|
113
|
-
│ ├── git/ commit, hotfix, rollback...
|
|
114
|
-
│ ├── roles/ tech-lead, pm, qa...
|
|
115
|
-
│ ├── meta/ customize, file-protection...
|
|
116
|
-
│ └── _uncategorized/ misc files
|
|
117
|
-
├── skills/ ← Source skill library
|
|
118
|
-
│ ├── orchestrator/
|
|
119
|
-
│ ├── memory-sync/
|
|
120
|
-
│ ├── brainstorm-agent/
|
|
121
|
-
│ ├── symphony-orchestrator/
|
|
122
|
-
│ ├── awf-session-restore/
|
|
123
|
-
│ └── ...
|
|
124
|
-
├── skill-packs/ ← Optional add-ons, installed on demand
|
|
125
|
-
│ ├── mobile-ios/
|
|
126
|
-
│ ├── mobile-android/
|
|
127
|
-
│ ├── marketing/
|
|
128
|
-
│ ├── creator-studio/
|
|
129
|
-
│ ├── neural-memory/
|
|
130
|
-
│ └── superpowers/
|
|
131
|
-
├── schemas/ ← JSON schemas
|
|
132
|
-
├── templates/ ← Project templates
|
|
133
|
-
├── scripts/
|
|
134
|
-
│ └── harvest.js ← Migration: pull from ~/.gemini/
|
|
135
|
-
├── VERSION → 1.5.0
|
|
136
|
-
└── package.json (@leejungkiin/awkit)
|
|
98
|
+
## Repository Layout
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
main-awf/ (Source of Truth)
|
|
102
|
+
├── bin/ # CLI entry points
|
|
103
|
+
├── core/ # Core rules/routing for agents
|
|
104
|
+
├── workflows/ # Workflow library
|
|
105
|
+
├── skills/ # Source skill library
|
|
106
|
+
├── skill-packs/ # Optional add-ons, installed on demand
|
|
107
|
+
├── schemas/ # JSON schemas
|
|
108
|
+
├── templates/ # Project templates
|
|
109
|
+
├── scripts/ # Harvest, automation gate, tooling
|
|
110
|
+
└── package.json # @leejungkiin/awkit
|
|
137
111
|
```
|
|
138
112
|
|
|
139
|
-
|
|
113
|
+
---
|
|
140
114
|
|
|
141
|
-
|
|
115
|
+
## Harvest (Migration)
|
|
116
|
+
|
|
117
|
+
If you edited files directly in `~/.gemini/antigravity/` and want to sync them back to this repo:
|
|
142
118
|
|
|
143
119
|
```bash
|
|
144
|
-
#
|
|
120
|
+
# Preview (no changes)
|
|
145
121
|
node scripts/harvest.js --dry-run
|
|
146
122
|
|
|
147
|
-
#
|
|
123
|
+
# Execute harvest
|
|
148
124
|
node scripts/harvest.js
|
|
149
125
|
```
|
|
150
126
|
|
|
151
|
-
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Runtime Model
|
|
152
130
|
|
|
153
|
-
```
|
|
131
|
+
```text
|
|
154
132
|
main-awf/ (edit here)
|
|
155
|
-
|
|
156
|
-
|
|
133
|
+
|
|
|
134
|
+
| awkit install
|
|
135
|
+
v
|
|
157
136
|
~/.gemini/antigravity/ (runtime)
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
Gemini / Claude / Any AI
|
|
137
|
+
|
|
|
138
|
+
v
|
|
139
|
+
Gemini / Claude / Any AI reads from runtime
|
|
161
140
|
```
|
|
162
141
|
|
|
163
|
-
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Lean Runtime
|
|
145
|
+
|
|
146
|
+
`awkit install` does not copy the entire source skill library into runtime by default.
|
|
164
147
|
|
|
165
|
-
|
|
148
|
+
- Default install = core work profile only (orchestration, planning, debugging, verification, review, coordination).
|
|
149
|
+
- Default target = active platform only, keeping platform-specific generated artifacts untouched unless explicitly requested.
|
|
150
|
+
- Domain-heavy packs (reverse engineering, marketing/ASO, media production, etc.) are excluded until you opt in.
|
|
151
|
+
- `awkit status` compares runtime against the core profile + enabled packs (optional packs do not create false drift).
|
|
166
152
|
|
|
167
|
-
|
|
168
|
-
- Default target = **active platform only**, which keeps repo-local generated files like `CLAUDE.md` and `.clinerules/*` untouched unless you explicitly choose them.
|
|
169
|
-
- Domain-heavy skills like mobile reverse engineering, ASO/marketing, and media production stay out of runtime until you opt in.
|
|
170
|
-
- `awkit status` now compares runtime against the active core profile + enabled packs, so optional skills no longer show as false drift.
|
|
171
|
-
- Re-running `awkit install` archives old managed optional skills from runtime, which helps shrink the skill catalog exposed to the agent.
|
|
153
|
+
---
|
|
172
154
|
|
|
173
|
-
##
|
|
155
|
+
## Automation Gate
|
|
174
156
|
|
|
175
|
-
|
|
157
|
+
AWKit provides a gated automation layer that reads `.project-identity` and enforces `automation.*` before executing:
|
|
176
158
|
|
|
177
159
|
```bash
|
|
178
|
-
|
|
160
|
+
awkit gate git commit "chore: update"
|
|
161
|
+
awkit gate git push
|
|
162
|
+
awkit gate git auto "chore: update"
|
|
163
|
+
|
|
164
|
+
awkit gate trello complete "Task Name"
|
|
165
|
+
awkit gate trello comment "Progress note..."
|
|
166
|
+
awkit gate trello block "Reason"
|
|
167
|
+
|
|
168
|
+
awkit gate telegram send "Message"
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Telegram Integration
|
|
174
|
+
|
|
175
|
+
Configure AWKit to send notifications (e.g., after pushes, tests, deploys):
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Setup bot token, chat id, and thread id (topic)
|
|
179
179
|
awkit tg setup
|
|
180
180
|
|
|
181
|
-
#
|
|
181
|
+
# Send a test message
|
|
182
182
|
awkit tg send "Hello from AWKit!"
|
|
183
183
|
|
|
184
|
-
#
|
|
184
|
+
# Send to a specific chat/topic
|
|
185
185
|
awkit tg send "Hello" --chat -100123456789 --topic 1234
|
|
186
186
|
```
|
|
187
187
|
|
|
188
|
-
|
|
188
|
+
---
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
## GitNexus Code Intelligence
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
AWKit integrates GitNexus for code intelligence and knowledge graphs.
|
|
193
193
|
|
|
194
194
|
```bash
|
|
195
|
-
# 1
|
|
195
|
+
# 1) Build a knowledge graph for a project (first run or after major structure changes)
|
|
196
196
|
npx @duytransipher/gitnexus analyze
|
|
197
197
|
|
|
198
|
-
# 2
|
|
198
|
+
# 2) Setup MCP servers and editor integrations
|
|
199
199
|
npx @duytransipher/gitnexus setup
|
|
200
200
|
```
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
---
|
|
203
203
|
|
|
204
|
-
##
|
|
204
|
+
## Skill Packs
|
|
205
205
|
|
|
206
206
|
```bash
|
|
207
207
|
awkit list-packs
|
|
@@ -212,17 +212,8 @@ awkit enable-pack marketing
|
|
|
212
212
|
awkit enable-pack creator-studio
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
## 🏗️ Versioning
|
|
216
|
-
|
|
217
|
-
| Version | Name | Notes |
|
|
218
|
-
|---------|------|-------|
|
|
219
|
-
| 4.x | AWF v4 | Shell-based, `awf-` prefix skills |
|
|
220
|
-
| 5.x | Antigravity v5 | Node.js, Symphony integration |
|
|
221
|
-
| 6.x | AWF v6 | main-awf, multiple sources |
|
|
222
|
-
| **1.1.x** | **AWKit v1.1.9** | **Single source of truth, Native CLI, Telegram Integration** |
|
|
223
|
-
| **1.5.x** | **AWKit v1.5.0** | **Unified Orchestration, Symphony 1.5.0, 7-Gate Intelligence** |
|
|
224
|
-
| **12.5.x** | **Antigravity v12.5** | **Mindful Checkpoints (TP-ITER, TP-SCOPE, TP-REST), @duytransipher/gitnexus** |
|
|
225
|
-
|
|
226
215
|
---
|
|
227
216
|
|
|
228
|
-
|
|
217
|
+
## License
|
|
218
|
+
|
|
219
|
+
MIT
|
package/bin/awk.js
CHANGED
|
@@ -38,7 +38,9 @@ const HOME = process.env.HOME || process.env.USERPROFILE;
|
|
|
38
38
|
const { generateClineRules, generateClineWorkflows, generateClineSkills } = require('./cline-generators');
|
|
39
39
|
const { generateCodexAgentsMd, generateCodexSkills, generateCodexAgents } = require('./codex-generators');
|
|
40
40
|
const { generateClaudeRules, generateClaudeSkills } = require('./claude-generators');
|
|
41
|
+
const { generateCursorRules, generateCursorSkills } = require('./cursor-generators');
|
|
41
42
|
const { cmdGate } = require('../scripts/automation-gate');
|
|
43
|
+
const { cmdObsidian } = require('../scripts/obsidian-sync');
|
|
42
44
|
|
|
43
45
|
// ─── Platform Definitions ──────────────────────────────────────────────────
|
|
44
46
|
|
|
@@ -85,6 +87,24 @@ const PLATFORMS = {
|
|
|
85
87
|
dirs: {
|
|
86
88
|
skills: '.claude/skills',
|
|
87
89
|
},
|
|
90
|
+
},
|
|
91
|
+
qwen: {
|
|
92
|
+
name: 'Qwen Code',
|
|
93
|
+
globalRoot: path.join(HOME, '.qwen'),
|
|
94
|
+
rulesFile: null,
|
|
95
|
+
versionFile: path.join(HOME, '.qwen', 'awk_version'),
|
|
96
|
+
dirs: {
|
|
97
|
+
skills: 'skills',
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
cursor: {
|
|
101
|
+
name: 'Cursor AI',
|
|
102
|
+
globalRoot: process.cwd(), // Local to project
|
|
103
|
+
rulesFile: '.cursor/rules/antigravity-rules.mdc',
|
|
104
|
+
versionFile: '.cursor/awk_version',
|
|
105
|
+
dirs: {
|
|
106
|
+
skills: '.cursor/rules',
|
|
107
|
+
},
|
|
88
108
|
}
|
|
89
109
|
};
|
|
90
110
|
|
|
@@ -516,6 +536,8 @@ function cmdInstall(args = []) {
|
|
|
516
536
|
if (args.includes('--cline') || args.includes('cline')) selectedPlatforms.push('cline');
|
|
517
537
|
if (args.includes('--codex') || args.includes('-x')) selectedPlatforms.push('codex');
|
|
518
538
|
if (args.includes('--claude-code') || args.includes('--claude') || args.includes('-c') || args.includes('claude')) selectedPlatforms.push('claude');
|
|
539
|
+
if (args.includes('--qwen') || args.includes('--qwen-code') || args.includes('-q') || args.includes('qwen')) selectedPlatforms.push('qwen');
|
|
540
|
+
if (args.includes('--cursor') || args.includes('cursor')) selectedPlatforms.push('cursor');
|
|
519
541
|
|
|
520
542
|
const pIdx = args.indexOf('--platform');
|
|
521
543
|
let legacyArg = null;
|
|
@@ -534,25 +556,29 @@ function cmdInstall(args = []) {
|
|
|
534
556
|
if (isUpdate) {
|
|
535
557
|
selectedPlatforms = [getActivePlatform()];
|
|
536
558
|
} else {
|
|
537
|
-
const platformOrder = ['antigravity', 'cline', 'codex', 'claude'];
|
|
559
|
+
const platformOrder = ['antigravity', 'cline', 'codex', 'claude', 'qwen', 'cursor'];
|
|
538
560
|
const defaultPlatform = getActivePlatform();
|
|
539
561
|
const defaultChoice = String(Math.max(platformOrder.indexOf(defaultPlatform), 0) + 1);
|
|
540
|
-
log(`${C.cyan}Select platforms to install (e.g., type "1,2", "all", or "1
|
|
562
|
+
log(`${C.cyan}Select platforms to install (e.g., type "1,2", "all", or "1-6"):${C.reset}`);
|
|
541
563
|
log(` 1. Gemini Code Assist (antigravity)`);
|
|
542
564
|
log(` 2. Cline (VS Code)`);
|
|
543
565
|
log(` 3. Codex CLI (codex)`);
|
|
544
566
|
log(` 4. Claude Code (.claude/)`);
|
|
545
|
-
log(` 5.
|
|
567
|
+
log(` 5. Qwen Code (~/.qwen/)`);
|
|
568
|
+
log(` 6. Cursor AI (.cursor/rules/)`);
|
|
569
|
+
log(` 7. All of the above`);
|
|
546
570
|
log(`${C.gray}Press Enter to install only the active platform: ${PLATFORMS[defaultPlatform].name}.${C.reset}`);
|
|
547
571
|
const choice = promptChoice('Choice', defaultChoice).trim().toLowerCase();
|
|
548
572
|
|
|
549
|
-
if (choice === '
|
|
573
|
+
if (choice === '7' || choice === 'all') {
|
|
550
574
|
selectedPlatforms = Object.keys(PLATFORMS);
|
|
551
575
|
} else {
|
|
552
576
|
if (choice.includes('1')) selectedPlatforms.push('antigravity');
|
|
553
577
|
if (choice.includes('2')) selectedPlatforms.push('cline');
|
|
554
578
|
if (choice.includes('3')) selectedPlatforms.push('codex');
|
|
555
579
|
if (choice.includes('4')) selectedPlatforms.push('claude');
|
|
580
|
+
if (choice.includes('5')) selectedPlatforms.push('qwen');
|
|
581
|
+
if (choice.includes('6')) selectedPlatforms.push('cursor');
|
|
556
582
|
}
|
|
557
583
|
}
|
|
558
584
|
}
|
|
@@ -614,6 +640,10 @@ function cmdInstall(args = []) {
|
|
|
614
640
|
const claudeTemplateSrc = path.join(AWK_ROOT, 'core', 'CLAUDE.md');
|
|
615
641
|
const claudeRulesDest = path.join(target, plat.rulesFile);
|
|
616
642
|
generateClaudeRules(claudeTemplateSrc, claudeRulesDest);
|
|
643
|
+
} else if (platform === 'cursor') {
|
|
644
|
+
info('Generating Cursor AI .mdc rules...');
|
|
645
|
+
const cursorRulesDest = path.join(target, plat.rulesFile);
|
|
646
|
+
generateCursorRules(path.join(AWK_ROOT, 'core', 'GEMINI.md'), cursorRulesDest);
|
|
617
647
|
}
|
|
618
648
|
|
|
619
649
|
// 3. Backup and install workflows
|
|
@@ -668,7 +698,11 @@ function cmdInstall(args = []) {
|
|
|
668
698
|
const agentsDest = path.join(target, plat.dirs.agents);
|
|
669
699
|
generateCodexAgents(skillsSrc, agentsDest, coreSkills);
|
|
670
700
|
} else if (platform === 'claude') {
|
|
671
|
-
generateClaudeSkills(skillsSrc, skillsDest, coreSkills);
|
|
701
|
+
generateClaudeSkills(skillsSrc, skillsDest, coreSkills, 'Claude Code');
|
|
702
|
+
} else if (platform === 'qwen') {
|
|
703
|
+
generateClaudeSkills(skillsSrc, skillsDest, coreSkills, 'Qwen Code'); // Shares the same format with Claude
|
|
704
|
+
} else if (platform === 'cursor') {
|
|
705
|
+
generateCursorSkills(skillsSrc, skillsDest, coreSkills);
|
|
672
706
|
} else {
|
|
673
707
|
const skillCount = copySelectedSkillDirs(skillsSrc, skillsDest, coreSkills);
|
|
674
708
|
ok(`${skillCount} core skill files installed`);
|
|
@@ -2298,6 +2332,25 @@ function buildProjectIdentity(projectName, projectType, cwd, date) {
|
|
|
2298
2332
|
list: 'Your List Name',
|
|
2299
2333
|
card: 'Your Card Name',
|
|
2300
2334
|
},
|
|
2335
|
+
automation: {
|
|
2336
|
+
autoQA: true,
|
|
2337
|
+
maxSelfCorrectionLoops: 3,
|
|
2338
|
+
telegram: {
|
|
2339
|
+
enabled: true,
|
|
2340
|
+
chatId: "",
|
|
2341
|
+
topicId: "",
|
|
2342
|
+
triggers: { git_push: true, task_complete: false, deploy: true }
|
|
2343
|
+
},
|
|
2344
|
+
trello: {
|
|
2345
|
+
enabled: true,
|
|
2346
|
+
autoSync: true,
|
|
2347
|
+
triggers: { task_complete: true, milestone: true, blocked: true }
|
|
2348
|
+
},
|
|
2349
|
+
git: {
|
|
2350
|
+
autoCommit: true,
|
|
2351
|
+
autoPush: true
|
|
2352
|
+
}
|
|
2353
|
+
},
|
|
2301
2354
|
projectStage: 'development',
|
|
2302
2355
|
codingStandards: cfg.codingStandards,
|
|
2303
2356
|
projectGoals: [],
|
|
@@ -2505,6 +2558,8 @@ async function cmdInit(forceFlag = false) {
|
|
|
2505
2558
|
const currentIdentity = JSON.parse(fs.readFileSync(identityPath, 'utf8'));
|
|
2506
2559
|
if (!currentIdentity.automation) {
|
|
2507
2560
|
currentIdentity.automation = {
|
|
2561
|
+
autoQA: true,
|
|
2562
|
+
maxSelfCorrectionLoops: 3,
|
|
2508
2563
|
telegram: {
|
|
2509
2564
|
enabled: true,
|
|
2510
2565
|
chatId: "",
|
|
@@ -2523,6 +2578,12 @@ async function cmdInit(forceFlag = false) {
|
|
|
2523
2578
|
};
|
|
2524
2579
|
fs.writeFileSync(identityPath, JSON.stringify(currentIdentity, null, 2) + '\n');
|
|
2525
2580
|
ok('Added Automation config placeholder to .project-identity');
|
|
2581
|
+
} else if (currentIdentity.automation.autoQA === undefined) {
|
|
2582
|
+
// Update existing automation block with new QA fields
|
|
2583
|
+
currentIdentity.automation.autoQA = true;
|
|
2584
|
+
currentIdentity.automation.maxSelfCorrectionLoops = 3;
|
|
2585
|
+
fs.writeFileSync(identityPath, JSON.stringify(currentIdentity, null, 2) + '\n');
|
|
2586
|
+
ok('Updated Automation config with autoQA defaults in .project-identity');
|
|
2526
2587
|
}
|
|
2527
2588
|
} catch (_) { /* ignore */ }
|
|
2528
2589
|
|
|
@@ -3867,6 +3928,10 @@ const [, , command, ...args] = process.argv;
|
|
|
3867
3928
|
case 'gate':
|
|
3868
3929
|
cmdGate(args);
|
|
3869
3930
|
break;
|
|
3931
|
+
case 'obsidian':
|
|
3932
|
+
case 'obs':
|
|
3933
|
+
cmdObsidian(args);
|
|
3934
|
+
break;
|
|
3870
3935
|
case 'admin':
|
|
3871
3936
|
cmdAdmin();
|
|
3872
3937
|
break;
|
package/bin/claude-generators.js
CHANGED
|
@@ -25,7 +25,7 @@ function generateClaudeRules(sourcePath, destPath) {
|
|
|
25
25
|
* Preserves full directory structure: <skill-name>/SKILL.md + scripts/ + templates/
|
|
26
26
|
* Injects YAML frontmatter if missing.
|
|
27
27
|
*/
|
|
28
|
-
function generateClaudeSkills(srcDir, destDir, selectedSkills = null) {
|
|
28
|
+
function generateClaudeSkills(srcDir, destDir, selectedSkills = null, platformName = 'Claude Code') {
|
|
29
29
|
if (!fs.existsSync(srcDir)) return;
|
|
30
30
|
|
|
31
31
|
fs.mkdirSync(destDir, { recursive: true });
|
|
@@ -51,7 +51,7 @@ function generateClaudeSkills(srcDir, destDir, selectedSkills = null) {
|
|
|
51
51
|
|
|
52
52
|
count++;
|
|
53
53
|
}
|
|
54
|
-
console.log(`✅ Generated ${count}
|
|
54
|
+
console.log(`✅ Generated ${count} ${platformName} skills in ${destDir}`);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/**
|