@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.
Files changed (49) hide show
  1. package/.agents/plugins/agentic-senior-core/.codex-plugin/plugin.json +1 -1
  2. package/.agents/plugins/agentic-senior-core/commands/asc-develop.md +1 -1
  3. package/.agents/plugins/agentic-senior-core/commands/asc-develop.toml +2 -3
  4. package/.agents/plugins/agentic-senior-core/commands/asc-test.md +1 -2
  5. package/.agents/plugins/agentic-senior-core/commands/asc-test.toml +2 -3
  6. package/.agents/plugins/agentic-senior-core/commands/asc-ui.md +1 -1
  7. package/.agents/plugins/agentic-senior-core/commands/asc-ui.toml +2 -3
  8. package/.agents/plugins/agentic-senior-core/hooks/lib/known-ui-slop-patterns.json +10 -0
  9. package/.agents/plugins/agentic-senior-core/hooks/post-edit-enforce.js +70 -9
  10. package/.agents/plugins/agentic-senior-core/hooks/stop-verify-gate.js +148 -0
  11. package/.agents/plugins/agentic-senior-core/hooks.json +7 -0
  12. package/.agents/plugins/agentic-senior-core/plugin.json +1 -1
  13. package/.agents/plugins/agentic-senior-core/rules/agentic-senior-core.md +2 -1
  14. package/.agents/plugins/agentic-senior-core/skills/asc/SKILL.md +7 -6
  15. package/.agents/plugins/agentic-senior-core/skills/asc/references/writing-skills.md +16 -1
  16. package/.agents/plugins/agentic-senior-core/skills/asc-develop/SKILL.md +44 -59
  17. package/.agents/plugins/agentic-senior-core/skills/asc-develop/references/execution-plans.md +43 -0
  18. package/.agents/plugins/agentic-senior-core/skills/asc-develop/references/subagent-orchestration.md +55 -0
  19. package/.agents/plugins/agentic-senior-core/skills/asc-pentest/references/fuzzing-dsl.md +1 -1
  20. package/.agents/plugins/agentic-senior-core/skills/asc-test/SKILL.md +5 -3
  21. package/.agents/plugins/agentic-senior-core/skills/asc-test/references/regression-proof.md +2 -2
  22. package/.agents/plugins/agentic-senior-core/skills/asc-test/references/systematic-debugging.md +32 -0
  23. package/.agents/plugins/agentic-senior-core/skills/asc-test/references/tdd-cycle.md +2 -2
  24. package/.agents/plugins/agentic-senior-core/skills/asc-test/references/uat.md +1 -1
  25. package/.agents/plugins/agentic-senior-core/skills/asc-ui/SKILL.md +42 -88
  26. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/data-to-structure.md +96 -0
  27. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/responsive-and-copy.md +32 -0
  28. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/states-and-a11y.md +38 -0
  29. package/gemini-extension.json +1 -1
  30. package/lib/cli/commands/preview.mjs +22 -17
  31. package/package.json +1 -1
  32. package/plugin.yaml +1 -1
  33. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/accessibility.md +0 -102
  34. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/copy-i18n.md +0 -151
  35. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/browser-surfaces.md +0 -69
  36. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/color-surfaces.md +0 -74
  37. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/motion.md +0 -55
  38. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/themes-catalog.md +0 -198
  39. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/typography.md +0 -54
  40. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/divergence.md +0 -159
  41. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/mobile-responsive.md +0 -115
  42. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/experience.md +0 -27
  43. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/genre-calibration.md +0 -89
  44. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/operate.md +0 -79
  45. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/persuade.md +0 -100
  46. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/read.md +0 -43
  47. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/redesign-audit.md +0 -89
  48. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/reflexes.md +0 -59
  49. package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/states-feedback.md +0 -148
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-senior-core",
3
- "version": "6.16.5",
3
+ "version": "6.17.0",
4
4
  "description": "Universal AI coding rules. Write code like a staff engineer.",
5
5
  "skills": "./skills/",
6
6
  "hooks": "./hooks/hooks.json",
@@ -1 +1 @@
1
- Run the engineering lifecycle workflow from skills/asc-develop/SKILL.md (Greenfield scaffolding, Brownfield features, and Refactoring). Research analogous modules, plan architecture and fallbacks, apply the decision ladder, and verify with tests without creating disk checkpoint files.
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 for greenfield apps, brownfield features, and refactoring"
2
- prompt = "Load and follow the asc-develop skill. Research analogous modules, plan architecture and failure fallbacks, apply the decision ladder, and verify with tests without creating disk checkpoint files."
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. Enforce the Iron Law (no production code without a failing test first), apply verification gates with fresh execution evidence, reproduce bugfixes with regression proofs, design boundary-isolated tests, and diagnose flaky tests.
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 = "Test-driven development, verification gates, Playwright E2E, and UAT"
2
- prompt = "Load and follow the asc-test skill. Enforce the Iron Law of TDD (no production code without a failing test first), apply verification gates with fresh execution evidence, perform regression proofs on bugfixes, design boundary-isolated tests without mocking the unit under test, and trace flaky tests."
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 UI/UX engineering and anti-slop guidelines from skills/asc-ui/SKILL.md. Clean up verbose microcopy, eliminate redundant headings/subtitles, enforce single-language purity without awkward foreign loanwords, optimize information density, and implement reliable data states.
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 = "UI/UX engineering, microcopy hygiene, and anti-slop design"
2
- prompt = "Load and follow the asc-ui skill. Inspect the target UI components and layouts. Strip out AI slop: eliminate redundant subtitles repeating headers, cut verbose copy by 50%, remove marketing buzzwords in functional tools, enforce strict single-language consistency without unidiomatic foreign loanwords, replace generic 3-card templates with scannable information density, and ensure proper state quad (loading, empty, error, populated) handling."
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
- let sourceEditsSinceStart = 0;
179
+ const parsedSteps = [];
180
+ let lastUserInputIdx = 0;
180
181
  for (let i = 0; i < lines.length; i++) {
181
- let step;
182
182
  try {
183
- step = JSON.parse(lines[i]);
184
- } catch (_) {
185
- continue;
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
- if (step.step_index >= minStep && step.type === 'PLANNER_RESPONSE' && Array.isArray(step.tool_calls)) {
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
- const norm = tc ? normalizeEditToolCall(tc.name, tc.args) : null;
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)) sourceEditsSinceStart++;
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
+
@@ -25,6 +25,13 @@
25
25
  "command": "node hooks/post-edit-enforce.js",
26
26
  "timeout": 15
27
27
  }
28
+ ],
29
+ "Stop": [
30
+ {
31
+ "type": "command",
32
+ "command": "node hooks/stop-verify-gate.js",
33
+ "timeout": 5
34
+ }
28
35
  ]
29
36
  }
30
37
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentic-senior-core",
3
3
  "displayName": "Agentic Senior Core",
4
- "version": "6.16.5",
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 Indonesian contexts, never prefix grammatical affixes to raw English stems (`di-submit`, `meng-generate`, `di-approve`, `me-restore`).
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 6 Core Meta-Skills Architecture
13
+ ## 1. The 7 Core Meta-Skills Architecture
14
14
 
15
- Agentic Senior Core organizes operational guidance into 6 high-density, non-overlapping playbooks:
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 feature implementation, and structured refactoring.
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: the Iron Law of TDD, verification gates, Playwright E2E, UAT acceptance checklists, regression proofs, and flaky test remediation.
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`**: Human-interface engineering: surface modes (Operate, Persuade, Read, Experience), UX microcopy hygiene, single-language localization, mobile reflow (`dvh`/`clamp`), and WCAG 2.2 AA accessibility.
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. The Discovery & Routing Trap
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, adding components, scaffolding a new project, starting from scratch, or refactoring existing code. Trigger when the user says: "add a feature", "build this endpoint", "implement this", "extend this", "wire up", "create a new route", "add a new page", "tambah fitur", "bikin endpoint", "new project", "start from scratch", "scaffold this", "bootstrap app", "bikin project baru", "buat aplikasi baru", "refactor this", "clean up this code", "rewrite this", "extract this into", "simplify this module", "rapikan kode ini", "refactor ini".
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 Playbook (`asc-develop`)
7
+ # Engineering Lifecycle & Execution Router (`asc-develop`)
8
8
 
9
- Universal engineering workflow for greenfield development, feature implementation, and structured refactoring. Enforces strict specification alignment, analog module reuse, and automated validation without cluttering repositories with disk checkpoint files.
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
- ## Mode 1: Greenfield (New Project Scaffolding)
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
- Use when creating a new application, service, or repository from zero.
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
- ### Step 1: Define & Clarify (No Code)
20
- 1. Clarify essential project requirements with the user: target runtime, platform, frameworks, performance bounds, and explicit non-goals.
21
- 2. Propose the top-level directory layout and module boundaries following idiomatic conventions of the chosen stack.
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 2: Implementation & Decision Ladder
25
- 1. Apply the ASC Decision Ladder to every module:
26
- - Does this need to be built?
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 3: Validation
34
- 1. Verify acceptance criteria against the initial specification.
35
- 2. Confirm no unnecessary dependencies or speculative abstractions were introduced.
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
- Use when adding endpoints, components, pages, or capabilities to an existing codebase.
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 1: Research (Codebase & Pattern Inventory)
44
- 1. Map existing code: scan analogous modules to inspect their layer split, naming conventions, error handling, and notification patterns.
45
- 2. **Reuse Inventory**: Identify existing shared components (`components/`, `ui/`), utility functions, and active toast/banner providers. Explicitly decide what must **NOT** be rebuilt.
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 2: Implementation Plan & Fallback Matrix
49
- 1. Define a step-by-step implementation plan with targeted files and functions.
50
- 2. **Failure Modes & Fallback Matrix**: Define concrete behavior for failure scenarios:
51
- - What happens on network/API failure or timeout?
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
- Use when restructuring, simplifying, or modernizing code without changing external behavior.
66
-
67
- ### Step 1: YAGNI Scan & Baseline Verification
68
- 1. **Verify Baseline**: Run project tests to ensure all existing tests pass before touching code. Do not refactor on broken tests.
69
- 2. **YAGNI Scan**: Identify speculative code to remove:
70
- - "Just in case" abstractions wrapping a single implementation with no second consumer.
71
- - Dead branches, unused flags, and premature extension points.
72
-
73
- ### Step 2: Scope & Execution
74
- 1. **Low-Level Refactors** (rename, extract helper, type tightening, dead code removal): Proceed immediately.
75
- 2. **High-Level Refactors** (moving modules, altering architecture boundaries, redesigning contracts): Propose the plan and rationale, then confirm before applying.
76
- 3. Apply Refactor Invariants:
77
- - Maintain flat happy paths via early returns over nested `if/else`.
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
+