@ryuenn3123/agentic-senior-core 6.16.5 → 6.17.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/.codex-plugin/plugin.json +1 -1
- package/.agents/plugins/agentic-senior-core/commands/asc-develop.md +1 -1
- package/.agents/plugins/agentic-senior-core/commands/asc-develop.toml +2 -3
- package/.agents/plugins/agentic-senior-core/commands/asc-test.md +1 -2
- package/.agents/plugins/agentic-senior-core/commands/asc-test.toml +2 -3
- package/.agents/plugins/agentic-senior-core/commands/asc-ui.md +1 -1
- package/.agents/plugins/agentic-senior-core/commands/asc-ui.toml +2 -3
- package/.agents/plugins/agentic-senior-core/hooks/lib/known-ui-slop-patterns.json +10 -0
- package/.agents/plugins/agentic-senior-core/hooks/post-edit-enforce.js +70 -9
- package/.agents/plugins/agentic-senior-core/hooks/stop-verify-gate.js +148 -0
- package/.agents/plugins/agentic-senior-core/hooks.json +7 -0
- package/.agents/plugins/agentic-senior-core/plugin.json +1 -1
- package/.agents/plugins/agentic-senior-core/rules/agentic-senior-core.md +2 -1
- package/.agents/plugins/agentic-senior-core/skills/asc/SKILL.md +7 -6
- package/.agents/plugins/agentic-senior-core/skills/asc/references/writing-skills.md +16 -1
- package/.agents/plugins/agentic-senior-core/skills/asc-develop/SKILL.md +44 -59
- package/.agents/plugins/agentic-senior-core/skills/asc-develop/references/execution-plans.md +43 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-develop/references/subagent-orchestration.md +55 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-pentest/references/fuzzing-dsl.md +1 -1
- package/.agents/plugins/agentic-senior-core/skills/asc-test/SKILL.md +5 -3
- package/.agents/plugins/agentic-senior-core/skills/asc-test/references/regression-proof.md +2 -2
- package/.agents/plugins/agentic-senior-core/skills/asc-test/references/systematic-debugging.md +32 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-test/references/tdd-cycle.md +2 -2
- package/.agents/plugins/agentic-senior-core/skills/asc-test/references/uat.md +1 -1
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/SKILL.md +42 -88
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/data-to-structure.md +96 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/responsive-and-copy.md +32 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/states-and-a11y.md +38 -0
- package/gemini-extension.json +1 -1
- package/lib/cli/commands/preview.mjs +22 -17
- package/package.json +1 -1
- package/plugin.yaml +1 -1
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/accessibility.md +0 -102
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/copy-i18n.md +0 -151
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/browser-surfaces.md +0 -69
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/color-surfaces.md +0 -74
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/motion.md +0 -55
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/themes-catalog.md +0 -198
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/typography.md +0 -54
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/divergence.md +0 -159
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/mobile-responsive.md +0 -115
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/experience.md +0 -27
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/genre-calibration.md +0 -89
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/operate.md +0 -79
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/persuade.md +0 -100
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/read.md +0 -43
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/redesign-audit.md +0 -89
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/reflexes.md +0 -59
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/states-feedback.md +0 -148
|
@@ -1 +1 @@
|
|
|
1
|
-
Run the engineering lifecycle workflow from skills/asc-develop/SKILL.md (Greenfield scaffolding, Brownfield features, and Refactoring).
|
|
1
|
+
Run the engineering lifecycle workflow from skills/asc-develop/SKILL.md (Greenfield scaffolding, Brownfield features, Bite-Sized Execution Plans, Subagent Orchestration, and Refactoring). Load references/execution-plans.md for planning and autonomous rulings or references/subagent-orchestration.md for parallel task dispatch, apply the decision ladder, and verify with fresh tests without creating disk checkpoint files.
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
description = "Engineering lifecycle
|
|
2
|
-
prompt = "Load and follow the asc-develop skill.
|
|
3
|
-
|
|
1
|
+
description = "Engineering lifecycle, execution plans, subagent orchestration, and refactoring"
|
|
2
|
+
prompt = "Load and follow the asc-develop skill (including references/execution-plans.md for bite-sized plans and rulings, or references/subagent-orchestration.md for parallel subagent dispatch). Research analogous modules, apply the decision ladder, and verify with fresh tests without creating disk checkpoint files."
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
Run the testing, TDD, verification, and UAT standards from skills/asc-test/SKILL.md.
|
|
2
|
-
|
|
1
|
+
Run the testing, systematic root-cause debugging, TDD, verification, and UAT standards from skills/asc-test/SKILL.md. Load references/systematic-debugging.md to investigate root causes before editing production code, enforce test-first discipline, apply verification gates with fresh execution evidence, reproduce bugfixes with regression proofs, and remediate flaky tests.
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
description = "
|
|
2
|
-
prompt = "Load and follow the asc-test skill
|
|
3
|
-
|
|
1
|
+
description = "Systematic root-cause debugging, TDD, verification gates, Playwright E2E, and UAT"
|
|
2
|
+
prompt = "Load and follow the asc-test skill (including references/systematic-debugging.md for root-cause investigation before code edits). Enforce test-first discipline, apply verification gates with fresh execution evidence, perform regression proofs on bugfixes, design boundary-isolated tests, and remediate flaky tests."
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Run the
|
|
1
|
+
Run the deterministic frontend engineering standards from skills/asc-ui/SKILL.md. Reuse existing workspace tokens and components/ui primitives, enforce anti-card-soup structural mapping (references/data-to-structure.md: <ol> steppers, <table> matrices, divide-y rosters, flat <dl> stats), verify the 4-state data contract and WCAG 2.2 AA accessibility (references/states-and-a11y.md), and enforce 100dvh mobile containment and single-language microcopy (references/responsive-and-copy.md).
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
description = "
|
|
2
|
-
prompt = "Load and follow the asc-ui skill.
|
|
3
|
-
|
|
1
|
+
description = "Deterministic frontend engineering, anti-card-soup structure, states, and WCAG accessibility"
|
|
2
|
+
prompt = "Load and follow the asc-ui skill. Reuse existing workspace CSS tokens and components/ui primitives, enforce deterministic data-to-structure mapping (references/data-to-structure.md) instead of repeated card grids, implement all 4 data states and WCAG 2.2 AA accessibility (references/states-and-a11y.md), and enforce min-h-dvh mobile containment and single-language microcopy (references/responsive-and-copy.md)."
|
|
@@ -159,6 +159,16 @@
|
|
|
159
159
|
"id": "copy-filler-preamble",
|
|
160
160
|
"regex": "\\b(In today's (?:fast-paced|digital)|Built for (?:the )?modern teams?|Welcome to the)\\b",
|
|
161
161
|
"message": "note: AI preamble/filler detected ('In today\\'s fast-paced...', 'Built for modern teams'). Delete the introductory throat-clearing and lead with action."
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "copy-clumsy-indonesian-translations",
|
|
165
|
+
"regex": "\\b(laci sembul|jendela sembul|garis rambut|panggung asimetris)\\b",
|
|
166
|
+
"message": "warning: clumsy literal translation detected ('laci sembul', 'garis rambut'). Use natural Indonesian ('panel samping', 'garis tipis', 'area utama')."
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"id": "ui-numbered-step-card",
|
|
170
|
+
"regex": "rounded-(?:xl|2xl)[^>{}]{0,120}\\bborder\\b[\\s\\S]{0,160}>\\s*0[1-9]\\s*</",
|
|
171
|
+
"message": "warning: numbered step card ('01', '02' inside bordered rounded card) detected. Render sequential workflows as a connected <ol> stepper instead of isolated cards."
|
|
162
172
|
}
|
|
163
173
|
]
|
|
164
174
|
}
|
|
@@ -176,22 +176,69 @@ function handleAntigravityPostInvocation(data) {
|
|
|
176
176
|
const findings = [];
|
|
177
177
|
const minStep = typeof data.initialNumSteps === 'number' ? data.initialNumSteps : 0;
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
const parsedSteps = [];
|
|
180
|
+
let lastUserInputIdx = 0;
|
|
180
181
|
for (let i = 0; i < lines.length; i++) {
|
|
181
|
-
let step;
|
|
182
182
|
try {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
const s = JSON.parse(lines[i]);
|
|
184
|
+
parsedSteps.push(s);
|
|
185
|
+
if (s && s.type === 'USER_INPUT') {
|
|
186
|
+
lastUserInputIdx = parsedSteps.length - 1;
|
|
187
|
+
}
|
|
188
|
+
} catch (_) {}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const isBugPrompt = /\b(bug|error|crash|fail(?:ing|ed|s)?|broken|500|exception|kenapa gagal|kok error|benerin)\b/i
|
|
192
|
+
.test(String(data.lastUserInput || ''));
|
|
193
|
+
const testPathRe = /(?:\.test\.|\.spec\.|_test\.|__tests__[\/\\]|tests?[\/\\])/i;
|
|
194
|
+
|
|
195
|
+
let priorTurnReproOrTest = false;
|
|
196
|
+
for (let i = lastUserInputIdx; i < parsedSteps.length; i++) {
|
|
197
|
+
const s = parsedSteps[i];
|
|
198
|
+
if (!s || s.step_index >= minStep || s.type !== 'PLANNER_RESPONSE' || !Array.isArray(s.tool_calls)) continue;
|
|
199
|
+
for (let j = 0; j < s.tool_calls.length; j++) {
|
|
200
|
+
const tc = s.tool_calls[j];
|
|
201
|
+
if (!tc) continue;
|
|
202
|
+
if (tc.name === 'run_command' || tc.name === 'Bash' || tc.name === 'run_shell_command') {
|
|
203
|
+
priorTurnReproOrTest = true;
|
|
204
|
+
}
|
|
205
|
+
const n = normalizeEditToolCall(tc.name, tc.args);
|
|
206
|
+
if (n && n.filePath && testPathRe.test(n.filePath)) {
|
|
207
|
+
priorTurnReproOrTest = true;
|
|
208
|
+
}
|
|
186
209
|
}
|
|
187
|
-
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
let sourceEditsSinceStart = 0;
|
|
213
|
+
let prodEditsThisInv = 0;
|
|
214
|
+
let reproOrTestThisInv = false;
|
|
215
|
+
|
|
216
|
+
for (let i = 0; i < parsedSteps.length; i++) {
|
|
217
|
+
const step = parsedSteps[i];
|
|
218
|
+
if (step && step.step_index >= minStep && step.type === 'PLANNER_RESPONSE' && Array.isArray(step.tool_calls)) {
|
|
188
219
|
for (let j = 0; j < step.tool_calls.length; j++) {
|
|
189
220
|
const tc = step.tool_calls[j];
|
|
190
|
-
|
|
221
|
+
if (!tc) continue;
|
|
222
|
+
if (tc.name === 'run_command' || tc.name === 'Bash' || tc.name === 'run_shell_command') {
|
|
223
|
+
reproOrTestThisInv = true;
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
if (tc.args && (tc.args.ArtifactMetadata || tc.args.IsArtifact)) continue;
|
|
227
|
+
|
|
228
|
+
const norm = normalizeEditToolCall(tc.name, tc.args);
|
|
191
229
|
if (!norm || !norm.filePath) continue;
|
|
192
230
|
|
|
231
|
+
if (testPathRe.test(norm.filePath)) {
|
|
232
|
+
reproOrTestThisInv = true;
|
|
233
|
+
}
|
|
234
|
+
|
|
193
235
|
const ext = path.extname(norm.filePath).slice(1);
|
|
194
|
-
if (SOURCE_EXTENSIONS.has(ext))
|
|
236
|
+
if (SOURCE_EXTENSIONS.has(ext)) {
|
|
237
|
+
sourceEditsSinceStart++;
|
|
238
|
+
if (!testPathRe.test(norm.filePath)) {
|
|
239
|
+
prodEditsThisInv++;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
195
242
|
|
|
196
243
|
const mappedInput = norm.canonicalTool === 'Edit'
|
|
197
244
|
? { file_path: norm.filePath, new_string: norm.newContent, old_string: norm.oldContent }
|
|
@@ -204,6 +251,10 @@ function handleAntigravityPostInvocation(data) {
|
|
|
204
251
|
}
|
|
205
252
|
}
|
|
206
253
|
|
|
254
|
+
if (isBugPrompt && prodEditsThisInv > 0 && !priorTurnReproOrTest && !reproOrTestThisInv) {
|
|
255
|
+
findings.push('[ASC Systematic Debugging] Production code was edited for a bug/error report before running a reproduction command or writing a failing regression test. Follow skills/asc-test/references/systematic-debugging.md (investigate root cause and reproduce first).');
|
|
256
|
+
}
|
|
257
|
+
|
|
207
258
|
if (sourceEditsSinceStart >= SESSION_DRIFT_THRESHOLD) {
|
|
208
259
|
findings.push('[ASC Session Drift] ' + sourceEditsSinceStart + ' source file edits this invocation. '
|
|
209
260
|
+ 'Re-read the decision ladder before continuing: (1) Does this need to be built? '
|
|
@@ -263,7 +314,7 @@ function processSingleEdit(toolName, toolInput, emitFn, workspaceRoot, skipSessi
|
|
|
263
314
|
checkSecurityPatterns(toolName, toolInput, filePath, findings);
|
|
264
315
|
checkStubPatterns(toolName, toolInput, filePath, findings);
|
|
265
316
|
|
|
266
|
-
if (ext === 'html' || ext === 'css' || ext === 'jsx' || ext === 'tsx' || ext === 'vue' || ext === 'svelte') {
|
|
317
|
+
if (ext === 'html' || ext === 'css' || ext === 'jsx' || ext === 'tsx' || ext === 'vue' || ext === 'svelte' || filePath.toLowerCase().endsWith('.blade.php')) {
|
|
267
318
|
checkUiSlopPatterns(toolName, toolInput, filePath, findings);
|
|
268
319
|
}
|
|
269
320
|
|
|
@@ -429,6 +480,16 @@ function checkUiSlopPatterns(toolName, toolInput, filePath, findings) {
|
|
|
429
480
|
} catch (_) { }
|
|
430
481
|
});
|
|
431
482
|
}
|
|
483
|
+
|
|
484
|
+
var cardGridRe = /<(?:section|div)[^>]*\bgrid\b[\s\S]{0,260}?rounded-(?:xl|2xl)[^>]*\bborder\b/ig;
|
|
485
|
+
var cardGrids = target.match(cardGridRe) || [];
|
|
486
|
+
var hasSemanticTableOrList = /<(?:table|ol)[\s>]/i.test(target);
|
|
487
|
+
if (cardGrids.length >= 3 && !hasSemanticTableOrList) {
|
|
488
|
+
findings.push(
|
|
489
|
+
'[ASC Card Soup Alert] ' + cardGrids.length + ' bordered card-grid sections detected in ' + path.basename(filePath)
|
|
490
|
+
+ ' with zero semantic <table> or <ol> containers. Convert sequential steps to <ol> steppers, criteria/records to <table>, and rosters to divide-y lists (skills/asc-ui/references/data-to-structure.md).'
|
|
491
|
+
);
|
|
492
|
+
}
|
|
432
493
|
}
|
|
433
494
|
|
|
434
495
|
function checkStubPatterns(toolName, toolInput, filePath, findings) {
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Antigravity Stop hook — enforces fresh verification command execution
|
|
3
|
+
// after source-code modifications before allowing turn completion.
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const { SOURCE_EXTENSIONS } = require('./constants.cjs');
|
|
8
|
+
const { normalizeEditToolCall } = require('./path-util.cjs');
|
|
9
|
+
|
|
10
|
+
function allowStop() {
|
|
11
|
+
process.stdout.write(JSON.stringify({ decision: 'allow' }) + '\n');
|
|
12
|
+
process.exit(0);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (process.stdin.isTTY) {
|
|
16
|
+
allowStop();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let handled = false;
|
|
20
|
+
let inputBuffer = '';
|
|
21
|
+
|
|
22
|
+
function evaluateStop(data) {
|
|
23
|
+
if (handled) return;
|
|
24
|
+
handled = true;
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
if (!data || typeof data !== 'object') {
|
|
29
|
+
allowStop();
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Never block when background tasks/subagents are still active
|
|
34
|
+
if (data.fullyIdle !== true) {
|
|
35
|
+
allowStop();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Only gate normal model completion, never system errors or step limits
|
|
40
|
+
if (data.terminationReason && data.terminationReason !== 'model_stop') {
|
|
41
|
+
allowStop();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Single-retry cap prevents infinite continuation loops
|
|
46
|
+
if (typeof data.executionNum === 'number' && data.executionNum >= 2) {
|
|
47
|
+
allowStop();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (!data.transcriptPath || !fs.existsSync(data.transcriptPath)) {
|
|
52
|
+
allowStop();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const lines = fs.readFileSync(data.transcriptPath, 'utf8').split('\n').filter(Boolean);
|
|
57
|
+
const steps = [];
|
|
58
|
+
for (let i = 0; i < lines.length; i++) {
|
|
59
|
+
try {
|
|
60
|
+
steps.push(JSON.parse(lines[i]));
|
|
61
|
+
} catch (_) {}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let startIdx = 0;
|
|
65
|
+
for (let i = steps.length - 1; i >= 0; i--) {
|
|
66
|
+
if (steps[i] && steps[i].type === 'USER_INPUT') {
|
|
67
|
+
startIdx = i + 1;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const artifactDir = typeof data.artifactDirectoryPath === 'string' && data.artifactDirectoryPath
|
|
73
|
+
? path.resolve(data.artifactDirectoryPath).toLowerCase()
|
|
74
|
+
: '';
|
|
75
|
+
|
|
76
|
+
let lastSourceEditIdx = -1;
|
|
77
|
+
let lastVerifyCmdIdx = -1;
|
|
78
|
+
|
|
79
|
+
for (let i = startIdx; i < steps.length; i++) {
|
|
80
|
+
const step = steps[i];
|
|
81
|
+
if (!step || step.type !== 'PLANNER_RESPONSE' || !Array.isArray(step.tool_calls)) continue;
|
|
82
|
+
|
|
83
|
+
for (let j = 0; j < step.tool_calls.length; j++) {
|
|
84
|
+
const tc = step.tool_calls[j];
|
|
85
|
+
if (!tc || !tc.name) continue;
|
|
86
|
+
|
|
87
|
+
if (tc.name === 'run_command' || tc.name === 'Bash' || tc.name === 'run_shell_command') {
|
|
88
|
+
lastVerifyCmdIdx = i;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const args = tc.args || {};
|
|
93
|
+
if (args.ArtifactMetadata || args.IsArtifact) continue;
|
|
94
|
+
|
|
95
|
+
const norm = normalizeEditToolCall(tc.name, args);
|
|
96
|
+
if (!norm || !norm.filePath) continue;
|
|
97
|
+
|
|
98
|
+
if (artifactDir) {
|
|
99
|
+
const resolvedEdit = path.resolve(norm.filePath).toLowerCase();
|
|
100
|
+
if (resolvedEdit.startsWith(artifactDir)) continue;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const ext = path.extname(norm.filePath).slice(1).toLowerCase();
|
|
104
|
+
if (SOURCE_EXTENSIONS.has(ext)) {
|
|
105
|
+
lastSourceEditIdx = i;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (lastSourceEditIdx !== -1 && lastVerifyCmdIdx < lastSourceEditIdx) {
|
|
111
|
+
process.stdout.write(JSON.stringify({
|
|
112
|
+
decision: 'continue',
|
|
113
|
+
reason: '[ASC Verification Gate] Source code was modified this turn without running a fresh verification or test command afterward. Execute the relevant test, build, or syntax check command and confirm exit code 0 before concluding.',
|
|
114
|
+
}) + '\n');
|
|
115
|
+
process.exit(0);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
allowStop();
|
|
120
|
+
} catch (_) {
|
|
121
|
+
allowStop();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const timer = setTimeout(function () { evaluateStop(null); }, 2500);
|
|
126
|
+
|
|
127
|
+
process.stdin.setEncoding('utf8');
|
|
128
|
+
process.stdin.on('data', function (chunk) {
|
|
129
|
+
inputBuffer += chunk;
|
|
130
|
+
try {
|
|
131
|
+
const parsed = JSON.parse(inputBuffer);
|
|
132
|
+
evaluateStop(parsed);
|
|
133
|
+
} catch (_) {}
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
process.stdin.on('end', function () {
|
|
137
|
+
if (handled) return;
|
|
138
|
+
if (!inputBuffer.trim()) {
|
|
139
|
+
evaluateStop(null);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
evaluateStop(JSON.parse(inputBuffer));
|
|
144
|
+
} catch (_) {
|
|
145
|
+
evaluateStop(null);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-senior-core",
|
|
3
3
|
"displayName": "Agentic Senior Core",
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.17.0",
|
|
5
5
|
"description": "Universal AI coding rules and workflows. Write code like a staff engineer.",
|
|
6
6
|
"author": "fatidaprilian",
|
|
7
7
|
"repository": "https://github.com/fatidaprilian/Agentic-Senior-Core"
|
|
@@ -46,7 +46,8 @@ When picking step 5 or 6 (unless trivial):
|
|
|
46
46
|
- 50% reduction rule: Write the statement, then cut unnecessary words. Replace ornamental adjectives with measurable facts (not "a robust, blazing-fast parser", write "parses 50MB/s with zero heap allocations").
|
|
47
47
|
- Ban AI cadences: Never use the Tricolon ("Fast. Simple. Secure."), the Mad-Lib ("The AI-powered platform for modern teams"), the Rebuttal ("Not just a tool, it's a workflow"), or conversational throat-clearing ("In today's fast-paced landscape...").
|
|
48
48
|
- Buzzword blacklist: Never emit `seamless(ly)`, `robust`, `empower(ing)`, `supercharge`, `elevate`, `effortless(ly)`, `cutting-edge`, `delve`, `testament`, `pivotal`, `crucial`, `game-changing`, or `next-generation`.
|
|
49
|
-
- Strict single-language purity: Choose one language per document or surface. In
|
|
49
|
+
- Strict single-language purity: Choose one language per document or surface. Never mix languages within a single deliverable. Never append parenthetical translation glosses to technical concepts. In localized contexts, translate concepts into the target language's natural, idiomatic engineering terms rather than clumsy literal calques.
|
|
50
|
+
- Silent internal framework discipline: Never leak ASC internal rule names, checklists, or meta-labels into user-facing plans, UI copy, or code comments. Focus purely on technical and domain facts.
|
|
50
51
|
- Code comment hygiene: Zero decorative character banners (// =====), zero line-by-line narration (// Step 1: validate), zero empty category tags (// Main logic), and zero signature echoes in docstrings. Keep only comments that document non-obvious operational constraints, security boundaries, concurrency hazards, or protocol contracts.
|
|
51
52
|
- Delete code that carries no behavior, safety, or test value. Readability wins over brevity.
|
|
52
53
|
- Detect and respect project linter/formatter configs. Do not restate style rules enforced by tooling.
|
|
@@ -10,16 +10,17 @@ Universal AI coding rules and meta-tooling playbook. Grounded in Google Engineer
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
## 1. The
|
|
13
|
+
## 1. The 7 Core Meta-Skills Architecture
|
|
14
14
|
|
|
15
|
-
Agentic Senior Core organizes operational guidance into
|
|
15
|
+
Agentic Senior Core organizes operational guidance into 7 high-density, non-overlapping playbooks:
|
|
16
16
|
|
|
17
|
-
1. **`/asc` (This Skill)**: Core engineering rules, codebase convention fingerprinting, adaptive preferences, debt tracking, skill authoring, and IDE adapter setup.
|
|
18
|
-
2. **`/asc-develop`**: Engineering lifecycle for greenfield scaffolding, brownfield
|
|
17
|
+
1. **`/asc` (This Skill)**: Core engineering rules, codebase convention fingerprinting, adaptive preferences, debt tracking, skill authoring & subagent pressure testing, and IDE adapter setup.
|
|
18
|
+
2. **`/asc-develop`**: Engineering lifecycle for greenfield scaffolding, brownfield features, bite-sized execution plans (`Ruling:` execution), subagent orchestration, and structured refactoring.
|
|
19
19
|
3. **`/asc-review`**: Quality and security assurance: production PR reviews, deep vulnerability audits (OWASP / ASI), and code clone deduplication.
|
|
20
|
-
4. **`/asc-test`**: Dedicated testing playbook:
|
|
20
|
+
4. **`/asc-test`**: Dedicated testing & debugging playbook: 4-phase systematic root-cause debugging, TDD, verification gates, Playwright E2E, UAT checklists, regression proofs, and flaky test remediation.
|
|
21
21
|
5. **`/asc-reference`**: Domain architecture reference for REST/GraphQL APIs, database indexing/transactions/migrations, infrastructure configs, and service resilience.
|
|
22
|
-
6. **`/asc-ui`**:
|
|
22
|
+
6. **`/asc-ui`**: Deterministic frontend engineering: anti-card-soup data-to-structure mapping, token/primitive reuse, 4-state data contracts, mobile containment (`min-h-dvh`), single-language microcopy, and WCAG 2.2 AA accessibility.
|
|
23
|
+
7. **`/asc-pentest`**: Authorized dynamic security verification: scope gates, Pentest Task Trees, multi-principal BOLA/IDOR matrices, and OWASP API Top 10 stateful fuzzing.
|
|
23
24
|
|
|
24
25
|
---
|
|
25
26
|
|
|
@@ -4,7 +4,7 @@ Engineering guidelines for creating high-performance, token-efficient skills for
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## 1.
|
|
7
|
+
## 1. Skill Discovery & Trigger Precision
|
|
8
8
|
|
|
9
9
|
Research into agent skill selection shows that models degrade in tool and skill routing when descriptions summarize internal workflows.
|
|
10
10
|
|
|
@@ -70,3 +70,18 @@ A skill without a verifiable gate is merely a suggestion.
|
|
|
70
70
|
- Every modification must be coupled with an automated verification command (linter, unit test, Playwright run, or slop pattern check).
|
|
71
71
|
- Mandate fresh execution evidence: require the agent to execute the runner fresh and verify exit code 0 before claiming completion.
|
|
72
72
|
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 5. Subagent Pressure Testing (TDD for Skills)
|
|
76
|
+
|
|
77
|
+
Treat skill authoring as Test-Driven Development applied to agent behavior. Never write speculative lectures for failure modes you have not observed:
|
|
78
|
+
|
|
79
|
+
1. **RED — Baseline Pressure Run (Without Skill):**
|
|
80
|
+
- Dispatch an isolated subagent with a realistic pressure scenario (time urgency, sunk-cost framing, or a tempting shortcut) *without* loading the target skill.
|
|
81
|
+
- Record the exact rationalizations and shortcuts the model takes.
|
|
82
|
+
2. **GREEN — Minimal Counter-Rule:**
|
|
83
|
+
- Add only the specific blocking gate, decision table row, or hook pattern needed to defeat those observed rationalizations.
|
|
84
|
+
- Re-run the same pressure prompt on a fresh subagent *with* the skill loaded and verify full compliance.
|
|
85
|
+
3. **REFACTOR — Close Loopholes Within Budget:**
|
|
86
|
+
- Tighten ambiguous phrasing while keeping `SKILL.md` strictly within the 150-line router budget and 1-hop reference limit.
|
|
87
|
+
|
|
@@ -1,84 +1,69 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: asc-develop
|
|
3
3
|
description: >
|
|
4
|
-
Trigger this skill when the user is: building a new feature, creating an endpoint,
|
|
4
|
+
Trigger this skill when the user is: building a new feature, creating an endpoint, planning multi-step tasks, dispatching subagents, scaffolding a new project, or refactoring existing code. Trigger when the user says: "add a feature", "build this endpoint", "make a plan", "break down tasks", "implement this", "wire up", "new project", "scaffold this", "refactor this", "clean up this code", "tambah fitur", "bikin endpoint", "bikin plan", "pecah task", "bikin project baru", "rapikan kode ini", "refactor ini".
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Engineering Lifecycle
|
|
7
|
+
# Engineering Lifecycle & Execution Router (`asc-develop`)
|
|
8
8
|
|
|
9
|
-
Universal
|
|
10
|
-
|
|
11
|
-
Grounded in: Fowler's Refactoring, Spec-Driven Development (SDD), and HumanLayer RPI.
|
|
9
|
+
Universal workflow for greenfield scaffolding, feature planning/implementation, subagent orchestration, and refactoring without repository disk clutter.
|
|
12
10
|
|
|
13
11
|
---
|
|
14
12
|
|
|
15
|
-
##
|
|
13
|
+
## 0. Mandatory 1-Hop Pre-Flight Gate (BLOCKING)
|
|
14
|
+
|
|
15
|
+
> [!IMPORTANT]
|
|
16
|
+
> Paths below are relative to this `SKILL.md` directory (`.../skills/asc-develop/`). Prepend this skill's folder path when calling `read_file`.
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
Before drafting multi-step plans, asking clarifying questions, or dispatching subagents:
|
|
19
|
+
1. **Multi-step feature, architecture plan, or continuous task execution** $\rightarrow$ **MUST** `read_file` `references/execution-plans.md` first (*Look Before You Ask*, exact signatures, and *Rulings, Not Stalls*).
|
|
20
|
+
2. **Executing $\ge$ 2 independent module tasks or parallel branches** $\rightarrow$ **MUST** `read_file` `references/subagent-orchestration.md` first (fresh context isolation, 2-pass review gate, `git worktree`).
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
3. Present an architectural summary and wait for user alignment before writing files.
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Mode 1: Greenfield (New Project Scaffolding)
|
|
23
25
|
|
|
24
|
-
### Step
|
|
25
|
-
1.
|
|
26
|
-
|
|
27
|
-
- Can standard library or native platform handle it?
|
|
28
|
-
- Can this be one straightforward function?
|
|
29
|
-
2. Build the core domain entities, data models, and services first before protocol/transport controllers.
|
|
30
|
-
3. For frontend interfaces, follow `/asc-ui`. For documentation and prose (READMEs, ADRs), enforce the Universal Prose Floor (zero AI throat-clearing, 50% word reduction, zero buzzwords).
|
|
31
|
-
4. Generate a quality gate workflow (e.g., `.github/workflows/quality-gate.yml`) that runs linter, type-check, and tests.
|
|
26
|
+
### Step 1: Define & Clarify (Look Before You Ask)
|
|
27
|
+
1. Clarify only unresolved requirements (target runtime, frameworks, non-goals) in at most one focused question with 2–3 concrete options.
|
|
28
|
+
2. Propose top-level directory layout and exact module contracts; confirm alignment before writing files.
|
|
32
29
|
|
|
33
|
-
### Step
|
|
34
|
-
1.
|
|
35
|
-
2.
|
|
30
|
+
### Step 2: Architecture & Implementation Hierarchy
|
|
31
|
+
1. Apply the 1–6 Decision Ladder to every module (needed $\rightarrow$ reuse $\rightarrow$ stdlib $\rightarrow$ installed dep $\rightarrow$ single function $\rightarrow$ minimal code).
|
|
32
|
+
2. Implement core domain models and services before transport controllers.
|
|
33
|
+
3. For frontend views, follow `/asc-ui`. Enforce clean single-language prose (50% word reduction, zero marketing buzzwords).
|
|
34
|
+
4. Add an automated quality gate workflow (lint, type-check, test).
|
|
36
35
|
|
|
37
36
|
---
|
|
38
37
|
|
|
39
38
|
## Mode 2: Brownfield (Feature Implementation)
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
### Step 1: Research & Reuse Inventory
|
|
41
|
+
1. Inspect analogous modules for layer splits, naming conventions, validation, and error handling.
|
|
42
|
+
2. Identify existing components (`components/ui/`), helpers, and notification providers that must **NOT** be rebuilt.
|
|
42
43
|
|
|
43
|
-
### Step
|
|
44
|
-
1.
|
|
45
|
-
2.
|
|
46
|
-
3. Present a factual research summary identifying reused components and implementation direction. Stop and confirm before implementing.
|
|
44
|
+
### Step 2: Right-Sized Plan & Fallback Matrix
|
|
45
|
+
1. Break work into testable atomic tasks with exact file paths and function signatures (`references/execution-plans.md`).
|
|
46
|
+
2. Define failure handling: network/DB failure recovery, pending UI states, and structured error responses (RFC 9457).
|
|
47
47
|
|
|
48
|
-
### Step
|
|
49
|
-
1.
|
|
50
|
-
2.
|
|
51
|
-
|
|
52
|
-
- What feedback does the user see? (Pending state, inline field error, toast/banner with retry).
|
|
53
|
-
- How can the system recover? (Retry, cached fallback, degraded mode).
|
|
54
|
-
3. If building UI or writing documentation, ensure compliance with the Universal Prose Floor and `/asc-ui` (zero marketing fluff, single-language consistency, mobile reflow, WCAG AA contrast).
|
|
55
|
-
|
|
56
|
-
### Step 3: Implement & Validate (TDD Integration)
|
|
57
|
-
1. Follow the TDD cycle via `/asc-test`: write the failing test first (RED), write minimal code to pass (GREEN), then refactor.
|
|
58
|
-
2. **Zero-Fake-Done Testing**: Run the project test suite (`ascx npm test`, `ascx pytest`, `ascx cargo test`). The test runner **MUST** exit with code 0.
|
|
59
|
-
3. Never weaken or delete test assertions to simulate a passing run. Fix the underlying business logic.
|
|
48
|
+
### Step 3: TDD Implementation & Autonomous Rulings
|
|
49
|
+
1. Execute each task via `/asc-test` (`RED` failing test $\rightarrow$ `GREEN` minimal code $\rightarrow$ `REFACTOR`).
|
|
50
|
+
2. Resolve minor spec ambiguities autonomously using inline `Ruling:` notes (`references/execution-plans.md`); stop only for destructive, security, or external side effects.
|
|
51
|
+
3. Run the test suite fresh (`ascx npm test`, `ascx pytest`, `ascx cargo test`) and confirm `exit 0`.
|
|
60
52
|
|
|
61
53
|
---
|
|
62
54
|
|
|
63
55
|
## Mode 3: Refactoring (Structure Modernization)
|
|
64
56
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
- Preserve all user feedback indicators, error notifications, and fallbacks.
|
|
79
|
-
- Never drop error-handling branches.
|
|
80
|
-
- Run a final simplification pass.
|
|
81
|
-
|
|
82
|
-
### Step 3: Verification
|
|
83
|
-
1. Re-run tests to confirm that behavior, public contracts, and error handling remain identical.
|
|
84
|
-
2. For every changed module, confirm that readability, maintainability, and safety have improved.
|
|
57
|
+
1. **Baseline Check:** Run existing tests first; never refactor on a failing baseline.
|
|
58
|
+
2. **YAGNI Scan:** Remove single-consumer wrapper abstractions, dead branches, and unused flags.
|
|
59
|
+
3. **Scope Gate:** Execute local renames/extractions directly; confirm cross-module boundary changes first.
|
|
60
|
+
4. **Invariants:** Flatten happy paths with early returns, preserve all error branches and user feedback states, and re-run the full test suite (`exit 0`).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## On-Demand Reference Library
|
|
65
|
+
|
|
66
|
+
| Lifecycle Requirement | Mandatory Reference Path |
|
|
67
|
+
| :--- | :--- |
|
|
68
|
+
| Discovery, bite-sized plans, exact signatures & `Ruling:` execution | `references/execution-plans.md` |
|
|
69
|
+
| Isolated subagent dispatch, 2-pass Spec/Quality review & `git worktree` | `references/subagent-orchestration.md` |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Execution Plans, Discovery & Autonomous Rulings
|
|
2
|
+
|
|
3
|
+
Structured specification and execution protocol for multi-step features, greenfield builds, and cross-module refactors.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Look Before You Ask (Pre-Plan Discovery)
|
|
8
|
+
|
|
9
|
+
Before asking clarifying questions or drafting a plan:
|
|
10
|
+
1. **Exhaust Repository Evidence:** Read target routes, controllers, services, schemas, and analogous tests first. Never ask the user a question that `package.json`, database migrations, or existing modules already answer.
|
|
11
|
+
2. **Single-Question Gate:** When genuine product or contract ambiguity remains, ask at most **one** focused question (or one compact multiple-choice prompt). Present 2–3 concrete approaches with explicit operational trade-offs (complexity, schema impact, latency), placing the recommended option first.
|
|
12
|
+
3. **Fast-Path Trivial Tasks:** If every requirement is already explicit in a small single-file request, skip plan ceremony and execute directly with test verification.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 2. Task Right-Sizing & Exact Signatures
|
|
17
|
+
|
|
18
|
+
Write plans for an engineer with zero prior context of the conversation:
|
|
19
|
+
|
|
20
|
+
1. **Map File Responsibility First:** List every file to create or modify and its single clear responsibility before decomposing tasks. Respect established repository layout.
|
|
21
|
+
2. **Exact Contracts Up Front:** Specify exact function names, parameter types, return shapes, error codes, and file paths in the plan.
|
|
22
|
+
3. **Testable Task Boundaries:** A task is the smallest unit that delivers an independently testable behavior. Fold config, types, and wiring into the task whose test requires them.
|
|
23
|
+
4. **Atomic 4-Step Task Cycle:**
|
|
24
|
+
- Write the failing test targeting the exact signature.
|
|
25
|
+
- Run the test runner and confirm it fails for the expected reason (`RED`).
|
|
26
|
+
- Write the minimum implementation code required to pass (`GREEN`).
|
|
27
|
+
- Run the test runner fresh and confirm `exit 0`.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 3. Continuous Execution: Rulings, Not Stalls
|
|
32
|
+
|
|
33
|
+
Once the user approves a plan (or requests direct execution), execute all tasks continuously without pausing between steps to ask *"Should I continue?"*.
|
|
34
|
+
|
|
35
|
+
1. **Autonomous Rulings on Minor Ambiguities:** When encountering an implementation detail not explicitly covered by the spec (edge-case defaults, internal helper naming, local validation order), decide immediately using codebase conventions and record the decision inline:
|
|
36
|
+
- `Ruling: <what was decided> — <technical rationale> — <remediation cost if wrong>`
|
|
37
|
+
- If the ruling defers non-critical scope via a stub, log it in `.agents/debt-ledger.json`.
|
|
38
|
+
2. **The Four Hard Stop Conditions:** Halt execution and ask the user **only** when hitting:
|
|
39
|
+
- An irreversible or destructive data/file operation.
|
|
40
|
+
- A security boundary, authentication, or authorization contract change not approved in the spec.
|
|
41
|
+
- An external side effect outside the local workspace (`git push`, package publish, production API mutation).
|
|
42
|
+
- A fundamental contradiction in requirements where every path forward is pure guesswork.
|
|
43
|
+
|