@ryuenn3123/agentic-senior-core 5.6.0 → 5.8.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.
- package/.agents/plugins/agentic-senior-core/skills/asc/SKILL.md +4 -1
- package/.agents/plugins/agentic-senior-core/skills/asc-add-feature/SKILL.md +46 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-audit/SKILL.md +2 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-debt/SKILL.md +2 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-new-project/SKILL.md +49 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-refactor/SKILL.md +23 -2
- package/.agents/plugins/agentic-senior-core/skills/asc-reference/SKILL.md +2 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-review/SKILL.md +2 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.devin-plugin/plugin.json +1 -1
- package/.github/plugin/plugin.json +1 -1
- package/.openclaw/skills/asc/SKILL.md +4 -8
- package/.openclaw/skills/asc-adapter/SKILL.md +37 -0
- package/.openclaw/skills/asc-add-feature/SKILL.md +46 -0
- package/.openclaw/skills/asc-audit/SKILL.md +2 -0
- package/.openclaw/skills/asc-debt/SKILL.md +2 -7
- package/.openclaw/skills/asc-new-project/SKILL.md +49 -0
- package/.openclaw/skills/asc-refactor/SKILL.md +56 -0
- package/.openclaw/skills/asc-reference/SKILL.md +2 -7
- package/.openclaw/skills/asc-review/SKILL.md +2 -0
- package/README.md +139 -30
- package/bin/agentic-senior-core.js +10 -0
- package/commands/asc-add-feature.md +1 -0
- package/commands/asc-add-feature.toml +6 -0
- package/commands/asc-help.md +2 -0
- package/commands/asc-help.toml +11 -1
- package/commands/asc-new-project.md +1 -0
- package/commands/asc-new-project.toml +6 -0
- package/gemini-extension.json +1 -1
- package/hooks/path-util.cjs +23 -0
- package/hooks/post-edit-enforce.js +34 -0
- package/lib/cli/commands/global.mjs +196 -0
- package/package.json +3 -2
- package/plugin.yaml +1 -1
- package/scripts/mcp-server/tools.mjs +10 -0
- package/skills/asc/SKILL.md +4 -1
- package/skills/asc-add-feature/SKILL.md +46 -0
- package/skills/asc-audit/SKILL.md +2 -0
- package/skills/asc-debt/SKILL.md +2 -0
- package/skills/asc-new-project/SKILL.md +49 -0
- package/skills/asc-refactor/SKILL.md +23 -2
- package/skills/asc-reference/SKILL.md +2 -0
- package/skills/asc-review/SKILL.md +2 -0
package/README.md
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](CONTRIBUTING.md)
|
|
9
9
|
|
|
10
|
+
**Minimalism plugins cut the code. This plugin makes sure what remains is production-safe.**
|
|
11
|
+
|
|
10
12
|
**Install once. Works across all projects. Supports 23+ AI coding agents.**
|
|
11
13
|
|
|
12
14
|
</div>
|
|
@@ -99,7 +101,7 @@ This copies one file to `.devin/rules/agentic-senior-core.md`. For legacy Windsu
|
|
|
99
101
|
asc adapter --windsurf
|
|
100
102
|
```
|
|
101
103
|
|
|
102
|
-
Repeat per project.
|
|
104
|
+
Repeat per project — or install once globally with `asc global --windsurf` (writes `~/.codeium/windsurf/memories/global_rules.md`, applies to all workspaces; skipped if you already have your own global rules file).
|
|
103
105
|
|
|
104
106
|
</details>
|
|
105
107
|
|
|
@@ -110,7 +112,7 @@ Repeat per project.
|
|
|
110
112
|
asc adapter --cline
|
|
111
113
|
```
|
|
112
114
|
|
|
113
|
-
Copies one file to `.clinerules/agentic-senior-core.md`. Repeat per project.
|
|
115
|
+
Copies one file to `.clinerules/agentic-senior-core.md`. Repeat per project — or install once globally with `asc global --cline` (rules land in `~/Documents/Cline/Rules/`, apply to all projects).
|
|
114
116
|
|
|
115
117
|
</details>
|
|
116
118
|
|
|
@@ -121,7 +123,7 @@ Copies one file to `.clinerules/agentic-senior-core.md`. Repeat per project.
|
|
|
121
123
|
asc adapter --copilot
|
|
122
124
|
```
|
|
123
125
|
|
|
124
|
-
Copies one file to `.github/copilot-instructions.md`. Repeat per project.
|
|
126
|
+
Copies one file to `.github/copilot-instructions.md`. Repeat per project — or install once globally with `asc global --copilot` (user-level instructions file in your VS Code profile, applies to all workspaces).
|
|
125
127
|
|
|
126
128
|
</details>
|
|
127
129
|
|
|
@@ -132,7 +134,7 @@ Copies one file to `.github/copilot-instructions.md`. Repeat per project.
|
|
|
132
134
|
asc adapter --kiro
|
|
133
135
|
```
|
|
134
136
|
|
|
135
|
-
Copies one file to `.kiro/steering/agentic-senior-core.md`. Repeat per project.
|
|
137
|
+
Copies one file to `.kiro/steering/agentic-senior-core.md`. Repeat per project. A global option exists (`asc global --kiro` → `~/.kiro/steering/`), but some Kiro builds have known bugs loading global steering — prefer the per-project adapter if rules are not picked up.
|
|
136
138
|
|
|
137
139
|
</details>
|
|
138
140
|
|
|
@@ -165,7 +167,7 @@ Copies one file to `.zed/rules/agentic-senior-core.md`. Zed also reads `AGENTS.m
|
|
|
165
167
|
asc adapter --aider
|
|
166
168
|
```
|
|
167
169
|
|
|
168
|
-
Copies one file to `CONVENTIONS.md` at project root. Aider reads this automatically. Repeat per project.
|
|
170
|
+
Copies one file to `CONVENTIONS.md` at project root. Aider reads this automatically. Repeat per project — or set it once globally in `~/.aider.conf.yml` with an absolute path into the npm package (`read: <npm root -g>/@ryuenn3123/agentic-senior-core/CONVENTIONS.md`). That pointer auto-updates with `npm update -g`.
|
|
169
171
|
|
|
170
172
|
</details>
|
|
171
173
|
|
|
@@ -176,7 +178,7 @@ Copies one file to `CONVENTIONS.md` at project root. Aider reads this automatica
|
|
|
176
178
|
asc adapter --kilocode
|
|
177
179
|
```
|
|
178
180
|
|
|
179
|
-
Copies one file to `.kilocode/rules/agentic-senior-core.md`. Repeat per project.
|
|
181
|
+
Copies one file to `.kilocode/rules/agentic-senior-core.md`. Repeat per project — or install once globally with `asc global --kilocode`. On Kilo v7+, the zero-maintenance option is pointing the `instructions:` array in `~/.config/kilo/kilo.jsonc` at the rules file inside the npm package (auto-updates with `npm update -g`).
|
|
180
182
|
|
|
181
183
|
</details>
|
|
182
184
|
|
|
@@ -187,7 +189,7 @@ Copies one file to `.kilocode/rules/agentic-senior-core.md`. Repeat per project.
|
|
|
187
189
|
asc adapter --roo
|
|
188
190
|
```
|
|
189
191
|
|
|
190
|
-
Copies one file to `.roo/rules/agentic-senior-core.md`. Repeat per project.
|
|
192
|
+
Copies one file to `.roo/rules/agentic-senior-core.md`. Repeat per project — or install once globally with `asc global --roo` (`~/.roo/rules/`). Note: Roo Code was discontinued in May 2026; support is kept for existing installs.
|
|
191
193
|
|
|
192
194
|
</details>
|
|
193
195
|
|
|
@@ -198,7 +200,7 @@ Copies one file to `.roo/rules/agentic-senior-core.md`. Repeat per project.
|
|
|
198
200
|
asc adapter --openhands
|
|
199
201
|
```
|
|
200
202
|
|
|
201
|
-
Copies one file to `.openhands/microagents/agentic-senior-core.md`. Repeat per project.
|
|
203
|
+
Copies one file to `.openhands/microagents/agentic-senior-core.md`. Repeat per project — or install once globally with `asc global --openhands` (`~/.openhands/microagents/`, loaded in all conversations for CLI/headless/dev modes; Docker runs need the directory mounted).
|
|
202
204
|
|
|
203
205
|
</details>
|
|
204
206
|
|
|
@@ -227,7 +229,13 @@ Antigravity IDE reads it automatically with `trigger: always_on`.
|
|
|
227
229
|
|
|
228
230
|
**Option B -- global plugin (all projects):**
|
|
229
231
|
|
|
230
|
-
|
|
232
|
+
One command (works on all platforms):
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
asc global --antigravity
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Or copy the plugin bundle manually to Antigravity's global plugin directory:
|
|
231
239
|
|
|
232
240
|
```powershell
|
|
233
241
|
# Windows (PowerShell)
|
|
@@ -246,7 +254,7 @@ cp -r "$(npm root -g)/@ryuenn3123/agentic-senior-core/.agents/plugins/agentic-se
|
|
|
246
254
|
|
|
247
255
|
The plugin bundle includes rules, skills (`/asc-review`, `/asc-audit`, `/asc-refactor`, `/asc-reference`, `/asc-debt`), and `plugin.json`.
|
|
248
256
|
|
|
249
|
-
> Note: `npm update -g` refreshes the npm package only. The global plugin copy does not auto-update -- re-run
|
|
257
|
+
> Note: `npm update -g` refreshes the npm package only. The global plugin copy does not auto-update -- re-run `asc global --antigravity` after each update.
|
|
250
258
|
|
|
251
259
|
</details>
|
|
252
260
|
|
|
@@ -280,7 +288,35 @@ Generates adapter files for Cursor, Devin Desktop, Windsurf, Cline, Copilot, Kir
|
|
|
280
288
|
</details>
|
|
281
289
|
|
|
282
290
|
**Terminal agents** (Claude Code, Codex, Gemini, Copilot CLI) = install once, always-on, zero per-project files.
|
|
283
|
-
**IDE agents**
|
|
291
|
+
**IDE agents** = one file per project via `asc adapter`, or install once globally via `asc global` (below).
|
|
292
|
+
|
|
293
|
+
### Global install (all projects, zero project files)
|
|
294
|
+
|
|
295
|
+
Most IDE tools also support user-level rules that apply to **every project** — no files in any repo root. One command installs them all:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
asc global --all
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
| Tool | Global location | Notes |
|
|
302
|
+
|------|----------------|-------|
|
|
303
|
+
| Google Antigravity IDE | `~/.gemini/config/plugins/agentic-senior-core/` | Full plugin bundle: rules + skills, always-on |
|
|
304
|
+
| Cline | `~/Documents/Cline/Rules/` | Toggleable in the Cline rules panel |
|
|
305
|
+
| Kilo Code | `~/.kilocode/rules/` | Or point `instructions:` in `~/.config/kilo/kilo.jsonc` at the npm package path — that variant auto-updates |
|
|
306
|
+
| Kiro | `~/.kiro/steering/` | Some builds have global-steering loading bugs; fall back to `asc adapter --kiro` |
|
|
307
|
+
| OpenHands | `~/.openhands/microagents/` | CLI/headless/dev modes; Docker runs need the mount |
|
|
308
|
+
| Windsurf / Devin Desktop | `~/.codeium/windsurf/memories/global_rules.md` | 6,000-char global limit (ASC rules fit); skipped if you already have your own file |
|
|
309
|
+
| GitHub Copilot (VS Code) | VS Code profile `prompts/` folder | Installed as a user `*.instructions.md` with `applyTo: '**'` |
|
|
310
|
+
| Roo Code | `~/.roo/rules/` | Roo Code was discontinued May 2026; kept for existing installs |
|
|
311
|
+
|
|
312
|
+
Tools without a global rules **file** (manual one-time setup instead):
|
|
313
|
+
|
|
314
|
+
- **Cursor** — Settings → Rules → User Rules: paste the contents of `AGENTS.md` (plain text field; a global rules directory is still a Cursor feature request).
|
|
315
|
+
- **Zed** — Rules Library in the Agent Panel: create a rule from `AGENTS.md` and mark it as default (paper clip icon).
|
|
316
|
+
- **Continue** — add a rules block to the global `config.yaml`.
|
|
317
|
+
- **Aider** — add `read: <absolute path to npm package>/CONVENTIONS.md` in `~/.aider.conf.yml`. This is a live pointer: it auto-updates with `npm update -g`, no re-copy ever.
|
|
318
|
+
|
|
319
|
+
Global rules load first; per-project adapter files (if present) take precedence on conflicts in every tool that supports both.
|
|
284
320
|
|
|
285
321
|
### Updating
|
|
286
322
|
|
|
@@ -290,13 +326,15 @@ Already installed? Just update the global package:
|
|
|
290
326
|
npm update -g @ryuenn3123/agentic-senior-core
|
|
291
327
|
```
|
|
292
328
|
|
|
293
|
-
Terminal agent plugins pick up the new version automatically on next session.
|
|
329
|
+
Terminal agent plugins pick up the new version automatically on next session. Global installs and IDE adapter files are static copies — after updating, re-run `asc global --all` once and `asc adapter --all` in each project that uses per-project files. (Aider's `read:` pointer and Kilo's `kilo.jsonc` path variant auto-update — nothing to re-run.)
|
|
294
330
|
|
|
295
331
|
---
|
|
296
332
|
|
|
297
333
|
## What It Does
|
|
298
334
|
|
|
299
|
-
AI coding agents over-build by default. Ask for a date picker, the agent installs a library, writes a wrapper component, adds a stylesheet, and opens a timezone discussion.
|
|
335
|
+
AI coding agents over-build by default. Ask for a date picker, the agent installs a library, writes a wrapper component, adds a stylesheet, and opens a timezone discussion. Worse — they silently skip input validation, concatenate SQL strings, commit secrets, and return stack traces to clients.
|
|
336
|
+
|
|
337
|
+
Code reduction plugins solve the first problem. ASC solves both.
|
|
300
338
|
|
|
301
339
|
This plugin loads universal engineering rules on every session. Before writing any code, the agent runs a decision ladder:
|
|
302
340
|
|
|
@@ -309,6 +347,56 @@ This plugin loads universal engineering rules on every session. Before writing a
|
|
|
309
347
|
|
|
310
348
|
The rules also cover security, architecture, testing, error handling, API design, database safety, frontend accessibility, infrastructure, resilience, and async patterns. All universal invariants -- no project-specific configuration needed.
|
|
311
349
|
|
|
350
|
+
### Before / After
|
|
351
|
+
|
|
352
|
+
<details>
|
|
353
|
+
<summary><b>Without ASC</b> — AI-generated endpoint (common output)</summary>
|
|
354
|
+
|
|
355
|
+
```javascript
|
|
356
|
+
app.post('/users', (req, res) => {
|
|
357
|
+
const { name, email, password } = req.body;
|
|
358
|
+
// No input validation
|
|
359
|
+
// SQL injection via string concatenation
|
|
360
|
+
const query = `INSERT INTO users (name, email, password)
|
|
361
|
+
VALUES ('${name}', '${email}', '${password}')`;
|
|
362
|
+
db.run(query, (err) => {
|
|
363
|
+
if (err) {
|
|
364
|
+
// Stack trace leaked to client
|
|
365
|
+
res.status(500).json({ error: err.message, stack: err.stack });
|
|
366
|
+
} else {
|
|
367
|
+
// Password returned in response
|
|
368
|
+
res.json({ name, email, password, message: 'User created' });
|
|
369
|
+
}
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
Issues: no input validation, SQL injection, plaintext password stored and returned, internal error details leaked, no auth check.
|
|
375
|
+
|
|
376
|
+
</details>
|
|
377
|
+
|
|
378
|
+
<details>
|
|
379
|
+
<summary><b>With ASC</b> — same prompt, rules active</summary>
|
|
380
|
+
|
|
381
|
+
```javascript
|
|
382
|
+
app.post('/users', authenticate, async (req, res) => {
|
|
383
|
+
const { name, email, password } = req.body;
|
|
384
|
+
if (!name || !email || !password) {
|
|
385
|
+
return res.status(400).json({ error: 'Missing required fields' });
|
|
386
|
+
}
|
|
387
|
+
const hash = await bcrypt.hash(password, 12);
|
|
388
|
+
const stmt = db.prepare(
|
|
389
|
+
'INSERT INTO users (name, email, password) VALUES (?, ?, ?)'
|
|
390
|
+
);
|
|
391
|
+
stmt.run(name, email, hash);
|
|
392
|
+
res.status(201).json({ name, email });
|
|
393
|
+
});
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
Validated input, parameterized query, hashed password, safe error response, auth middleware, no sensitive data in response.
|
|
397
|
+
|
|
398
|
+
</details>
|
|
399
|
+
|
|
312
400
|
### Not lazy about
|
|
313
401
|
|
|
314
402
|
Input validation at trust boundaries, parameterized queries, auth checks, error handling that prevents data loss, accessibility, anything explicitly requested. These are never skipped.
|
|
@@ -327,20 +415,20 @@ Input validation at trust boundaries, parameterized queries, auth checks, error
|
|
|
327
415
|
| Hermes | Terminal agent | Plugin registration | No |
|
|
328
416
|
| OpenCode | Terminal agent | Auto-detected | No |
|
|
329
417
|
| OpenClaw | Terminal agent | Auto-detected | No |
|
|
330
|
-
| Antigravity IDE | IDE |
|
|
418
|
+
| Antigravity IDE | IDE | `asc global --antigravity` | No (global) |
|
|
331
419
|
| Antigravity CLI | Terminal agent | `agy plugin install` | No |
|
|
332
|
-
| Cursor | IDE | `asc adapter --cursor` | Yes (1 file) |
|
|
420
|
+
| Cursor | IDE | `asc adapter --cursor` | Yes (1 file) — or paste User Rules once |
|
|
333
421
|
| Devin Desktop | IDE | `asc adapter --devin` | Yes (1 file) |
|
|
334
|
-
| Windsurf (legacy) | IDE | `asc
|
|
335
|
-
| Cline | VS Code ext | `asc
|
|
336
|
-
| GitHub Copilot | VS Code ext | `asc
|
|
337
|
-
| Kiro | IDE | `asc adapter --kiro` | Yes (1 file) |
|
|
338
|
-
| Continue | VS Code ext | `asc adapter --continue` | Yes (1 file) |
|
|
339
|
-
| Zed | IDE | `asc adapter --zed` | Yes (1 file) |
|
|
340
|
-
| Aider | Terminal agent | `asc adapter --aider` | Yes (1 file) |
|
|
341
|
-
| Kilo Code | VS Code ext | `asc
|
|
342
|
-
| Roo Code | VS Code ext | `asc
|
|
343
|
-
| OpenHands | Agent | `asc
|
|
422
|
+
| Windsurf (legacy) | IDE | `asc global --windsurf` | No (global) — or `asc adapter --windsurf` |
|
|
423
|
+
| Cline | VS Code ext | `asc global --cline` | No (global) — or `asc adapter --cline` |
|
|
424
|
+
| GitHub Copilot | VS Code ext | `asc global --copilot` | No (global) — or `asc adapter --copilot` |
|
|
425
|
+
| Kiro | IDE | `asc adapter --kiro` | Yes (1 file) — global via `asc global --kiro` (buggy in some builds) |
|
|
426
|
+
| Continue | VS Code ext | `asc adapter --continue` | Yes (1 file) — or global config.yaml rules |
|
|
427
|
+
| Zed | IDE | `asc adapter --zed` | Yes (1 file) — or default rule in Rules Library |
|
|
428
|
+
| Aider | Terminal agent | `asc adapter --aider` | Yes (1 file) — or `read:` pointer in `~/.aider.conf.yml` |
|
|
429
|
+
| Kilo Code | VS Code ext | `asc global --kilocode` | No (global) — or `asc adapter --kilocode` |
|
|
430
|
+
| Roo Code | VS Code ext | `asc global --roo` | No (global) — discontinued May 2026 |
|
|
431
|
+
| OpenHands | Agent | `asc global --openhands` | No (global) — or `asc adapter --openhands` |
|
|
344
432
|
|
|
345
433
|
---
|
|
346
434
|
|
|
@@ -350,6 +438,8 @@ Available on plugin hosts (Claude Code, Codex, Gemini CLI):
|
|
|
350
438
|
|
|
351
439
|
| Command | Purpose |
|
|
352
440
|
|---------|---------|
|
|
441
|
+
| `/asc-new-project` | Greenfield workflow (Define -> Spec -> Implement -> Validate) |
|
|
442
|
+
| `/asc-add-feature` | Brownfield workflow (Research -> Plan -> Implement) |
|
|
353
443
|
| `/asc-refactor` | Structured refactoring workflow |
|
|
354
444
|
| `/asc-review` | Production-risk code review with severity-ordered findings |
|
|
355
445
|
| `/asc-audit` | Security and architecture audit |
|
|
@@ -363,6 +453,7 @@ Available on plugin hosts (Claude Code, Codex, Gemini CLI):
|
|
|
363
453
|
|
|
364
454
|
```bash
|
|
365
455
|
asc adapter [--cursor|--devin|--windsurf|--cline|--copilot|--kiro|--continue|--zed|--aider|--kilocode|--roo|--openhands|--all]
|
|
456
|
+
asc global [--antigravity|--cline|--kilocode|--kiro|--openhands|--windsurf|--copilot|--roo|--all]
|
|
366
457
|
asc uninstall [--dry-run]
|
|
367
458
|
asc clean [--dry-run]
|
|
368
459
|
asc status
|
|
@@ -377,12 +468,9 @@ asc --help
|
|
|
377
468
|
|
|
378
469
|
## Works With Other Plugins
|
|
379
470
|
|
|
380
|
-
ASC covers
|
|
381
|
-
|
|
382
|
-
- **ponytail** -- YAGNI minimalism and code reduction
|
|
383
|
-
- **awesome-cursorrules** -- Framework-specific context and stack declarations
|
|
471
|
+
ASC covers security, architecture, testing, API design, database safety, accessibility, infrastructure, and resilience — domains that code-reduction and minimalism plugins explicitly leave out of scope. They reduce volume; ASC enforces safety on what remains.
|
|
384
472
|
|
|
385
|
-
Use them together. No conflicts.
|
|
473
|
+
Use them together. No conflicts — ASC is designed to be complementary.
|
|
386
474
|
|
|
387
475
|
---
|
|
388
476
|
|
|
@@ -432,3 +520,24 @@ This removes `.agent-context/`, `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, and other
|
|
|
432
520
|
| Commands | 0 | Metadata only |
|
|
433
521
|
|
|
434
522
|
Total always-on cost: ~1,200 tokens per session.
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## Grounded In
|
|
527
|
+
|
|
528
|
+
Every rule and skill workflow is derived from established engineering standards, not invented conventions.
|
|
529
|
+
|
|
530
|
+
| Domain | Standards |
|
|
531
|
+
|--------|-----------|
|
|
532
|
+
| Security & audit | OWASP Top 10, OWASP ASVS v4, CWE classification, CVSS report structure |
|
|
533
|
+
| Code review | OWASP Risk Rating Methodology, Google Engineering Practices |
|
|
534
|
+
| Architecture | Clean Architecture, Hexagonal Architecture |
|
|
535
|
+
| Workflows | RPI & QRSPI (Dex Horthy/HumanLayer), SDD (GitHub Spec Kit) |
|
|
536
|
+
| Refactoring | Fowler's Refactoring, Rule of Three, YAGNI (XP/Kent Beck) |
|
|
537
|
+
| Database | Fowler's Money Pattern, UTC timestamp convention, migration versioning |
|
|
538
|
+
| Accessibility | WCAG 2.2 AA |
|
|
539
|
+
| Resilience | Nygard's Release It!, AWS Well-Architected Reliability Pillar |
|
|
540
|
+
| Technical debt | Cunningham's debt metaphor (1992) |
|
|
541
|
+
| Instruction design | Low instruction density for higher LLM compliance — supported by IFScale (arXiv:2507.11538) and RECAST (arXiv:2505.19030) |
|
|
542
|
+
|
|
543
|
+
The decision ladder (check before building) and debt ledger format are ASC-specific implementations grounded in these principles.
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Commands:
|
|
6
6
|
* adapter Generate instruction-tier adapter files for IDEs without plugin support
|
|
7
|
+
* global Install rules to user-level (global) locations, applies to all projects
|
|
7
8
|
* uninstall Remove ASC adapter files from the current project
|
|
8
9
|
* clean Remove v4 per-project artifacts (.agent-context/, bridge files)
|
|
9
10
|
* status Show detected IDEs and install hints
|
|
@@ -25,10 +26,13 @@ function printUsage() {
|
|
|
25
26
|
console.log('Plugin install (always-on, no per-project files):');
|
|
26
27
|
console.log(' Claude Code: /plugin marketplace add fatidaprilian/Agentic-Senior-Core');
|
|
27
28
|
console.log(' Codex CLI: codex plugins install agentic-senior-core\n');
|
|
29
|
+
console.log('Global install (all projects, zero project files):');
|
|
30
|
+
console.log(' asc global --antigravity --cline --kilocode --kiro --openhands --windsurf --copilot --all\n');
|
|
28
31
|
console.log('Adapter install (one file per project):');
|
|
29
32
|
console.log(' asc adapter --cursor --devin --cline --copilot --kiro --continue --zed --aider --kilocode --roo --openhands --windsurf --all\n');
|
|
30
33
|
console.log('Commands:');
|
|
31
34
|
console.log(' adapter Generate instruction-tier adapter files');
|
|
35
|
+
console.log(' global Install rules to user-level (global) locations');
|
|
32
36
|
console.log(' uninstall Remove ASC adapter files from this project');
|
|
33
37
|
console.log(' clean Remove v4 per-project artifacts');
|
|
34
38
|
console.log(' status Show detected IDEs and install hints');
|
|
@@ -57,6 +61,12 @@ async function main() {
|
|
|
57
61
|
return;
|
|
58
62
|
}
|
|
59
63
|
|
|
64
|
+
if (commandArgument === 'global') {
|
|
65
|
+
const { runGlobalCommand } = await import('../lib/cli/commands/global.mjs');
|
|
66
|
+
await runGlobalCommand(commandArguments);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
60
70
|
if (commandArgument === 'uninstall') {
|
|
61
71
|
const { runUninstallCommand } = await import('../lib/cli/commands/uninstall.mjs');
|
|
62
72
|
await runUninstallCommand(commandArguments);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Run the brownfield feature workflow from skills/asc-add-feature/SKILL.md. Follow the Research -> Plan -> Implement phases with explicit human gates to prevent context rot.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
name = "asc-add-feature"
|
|
2
|
+
description = "Structured brownfield workflow. Research -> Plan -> Implement with human gates."
|
|
3
|
+
|
|
4
|
+
[[instructions]]
|
|
5
|
+
type = "context"
|
|
6
|
+
content = "Run the brownfield feature workflow from skills/asc-add-feature/SKILL.md. Stop and wait for user approval at the end of each phase (Research, Plan) before proceeding. Update the gate state as instructed."
|
package/commands/asc-help.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
Show available Agentic Senior Core commands and skills.
|
|
2
2
|
|
|
3
3
|
Available commands:
|
|
4
|
+
- /asc-new-project -- Greenfield workflow (Define -> Spec -> Implement -> Validate)
|
|
5
|
+
- /asc-add-feature -- Brownfield workflow (Research -> Plan -> Implement)
|
|
4
6
|
- /asc-refactor -- Structured refactoring workflow
|
|
5
7
|
- /asc-review -- Production-risk code review
|
|
6
8
|
- /asc-audit -- Security and architecture audit
|
package/commands/asc-help.toml
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
description = "Show available Agentic Senior Core commands"
|
|
2
|
-
prompt =
|
|
2
|
+
prompt = '''
|
|
3
|
+
Show available Agentic Senior Core commands and skills.
|
|
4
|
+
|
|
5
|
+
Available commands:
|
|
6
|
+
- /asc-new-project -- Greenfield workflow (Define -> Spec -> Implement -> Validate)
|
|
7
|
+
- /asc-add-feature -- Brownfield workflow (Research -> Plan -> Implement)
|
|
8
|
+
- /asc-refactor -- Structured refactoring workflow
|
|
9
|
+
- /asc-review -- Production-risk code review
|
|
10
|
+
- /asc-audit -- Security and architecture audit
|
|
11
|
+
- /asc-help -- This help. ASC loads universal engineering rules covering code quality, architecture, security, error handling, testing, API design, database, frontend, infrastructure, resilience, and async patterns.
|
|
12
|
+
'''
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Run the greenfield project workflow from skills/asc-new-project/SKILL.md. Follow the Define -> Spec -> Implement -> Validate phases with explicit human gates before building.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
name = "asc-new-project"
|
|
2
|
+
description = "Structured greenfield workflow. Define -> Spec -> Implement -> Validate with human gates."
|
|
3
|
+
|
|
4
|
+
[[instructions]]
|
|
5
|
+
type = "context"
|
|
6
|
+
content = "Run the greenfield project workflow from skills/asc-new-project/SKILL.md. Stop and wait for user approval at the end of each phase (Define, Spec) before proceeding. Update the gate state as instructed."
|
package/gemini-extension.json
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const crypto = require('crypto');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const os = require('os');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Computes a stable path for the workflow gate file based on the project path.
|
|
7
|
+
* Normalizes the path (resolves absolute, lowercase, forward slashes, no trailing slash)
|
|
8
|
+
* to ensure identical hashes regardless of OS path separator or drive letter casing.
|
|
9
|
+
* Note: .toLowerCase() deliberately treats Linux/Mac paths case-insensitively,
|
|
10
|
+
* accepting the negligible risk of collisions for the benefit of Windows stability.
|
|
11
|
+
*
|
|
12
|
+
* @param {string} projectPath - The root path of the project.
|
|
13
|
+
* @returns {string} Absolute path to the global workflow gate JSON file.
|
|
14
|
+
*/
|
|
15
|
+
function getWorkflowGatePath(projectPath) {
|
|
16
|
+
const normalizedPath = path.resolve(projectPath).replace(/\\/g, '/').toLowerCase().replace(/\/$/, '');
|
|
17
|
+
const projectHash = crypto.createHash('sha256').update(normalizedPath).digest('hex').substring(0, 16);
|
|
18
|
+
return path.join(os.homedir(), '.config', 'agentic-senior-core', 'gates', `${projectHash}.json`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
module.exports = {
|
|
22
|
+
getWorkflowGatePath
|
|
23
|
+
};
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// Fires after Edit/Write. Checks for ladder violations and injects a nudge.
|
|
4
4
|
// Supports Claude Code, Codex CLI, and GitHub Copilot CLI.
|
|
5
5
|
|
|
6
|
+
const fs = require('fs');
|
|
6
7
|
const path = require('path');
|
|
7
8
|
|
|
8
9
|
const STDLIB_DUPLICATES = new Set([
|
|
@@ -50,6 +51,10 @@ process.stdin.on('end', function () {
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
|
|
54
|
+
if (ext !== 'md') {
|
|
55
|
+
checkWorkflowGate(toolName, filePath, ext, findings);
|
|
56
|
+
}
|
|
57
|
+
|
|
53
58
|
if (findings.length === 0) return;
|
|
54
59
|
|
|
55
60
|
const nudge = '[ASC enforcement] ' + findings.join(' ') + ' Review the decision ladder before continuing.';
|
|
@@ -115,6 +120,35 @@ function checkNewFileSize(toolInput, filePath, findings) {
|
|
|
115
120
|
}
|
|
116
121
|
}
|
|
117
122
|
|
|
123
|
+
function checkWorkflowGate(toolName, filePath, ext, findings) {
|
|
124
|
+
try {
|
|
125
|
+
var pathUtil = require('./path-util.cjs');
|
|
126
|
+
var gatePath = pathUtil.getWorkflowGatePath(process.cwd());
|
|
127
|
+
if (!fs.existsSync(gatePath)) return;
|
|
128
|
+
|
|
129
|
+
var gateStr = fs.readFileSync(gatePath, 'utf8');
|
|
130
|
+
var gate = JSON.parse(gateStr);
|
|
131
|
+
|
|
132
|
+
if (gate.updatedAt) {
|
|
133
|
+
var ageHours = (Date.now() - new Date(gate.updatedAt).getTime()) / (1000 * 60 * 60);
|
|
134
|
+
if (ageHours > 4) {
|
|
135
|
+
fs.unlinkSync(gatePath);
|
|
136
|
+
findings.push('Cleared stale workflow gate (' + gate.workflow + ').');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (gate.phase === 'research' || gate.phase === 'plan') {
|
|
142
|
+
findings.push(
|
|
143
|
+
'Workflow gate bypass: ' + gate.workflow + ' is in ' + gate.phase + ' phase but source code was edited. '
|
|
144
|
+
+ 'Stop and wait for phase approval. If you must proceed, log this bypass to the debt ledger.'
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
} catch (_) {
|
|
148
|
+
// Silent fail
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
118
152
|
function emit(nudge) {
|
|
119
153
|
try {
|
|
120
154
|
var isCopilot = Boolean(process.env.COPILOT_PLUGIN_DATA);
|