@ryuenn3123/agentic-senior-core 2.0.7 → 2.0.8

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.
@@ -22,11 +22,11 @@ For EVERY violation found:
22
22
 
23
23
  Output format:
24
24
  ## PR REVIEW RESULTS
25
- [Item] — Passes
26
- [Item] — FAILS (with Reasoning Chain)
25
+ PASS [Item]
26
+ FAIL [Item] (with Reasoning Chain)
27
27
 
28
28
  ## SECURITY AUDIT RESULTS
29
- 🔴/🟠/🟡/🟢 [Finding] — severity + fix
29
+ CRITICAL/HIGH/MEDIUM/LOW [Finding] — severity + fix
30
30
 
31
31
  VERDICT: PASS / FAIL
32
32
  ```
@@ -13,13 +13,13 @@ Output format:
13
13
  ## PR REVIEW RESULTS
14
14
  ━━━━━━━━━━━━━━━━━━━
15
15
 
16
- [Item] — Passes
17
- [Item] — FAILS
18
- 📌 Rule: [rule file + section]
19
- Problem: [specific issue found]
20
- Fix: [what to change]
16
+ PASS [Item]
17
+ FAIL [Item]
18
+ Rule: [rule file + section]
19
+ Problem: [specific issue found]
20
+ Fix: [what to change]
21
21
 
22
- VERDICT: PASS / FAIL (X/Y items passed)
22
+ VERDICT: PASS / FAIL (X/Y items passed)
23
23
  ```
24
24
 
25
25
  ---
@@ -95,3 +95,8 @@ VERDICT: PASS ✅ / FAIL ❌ (X/Y items passed)
95
95
  - [ ] Complex business logic has comments explaining WHY
96
96
  - [ ] Public functions/methods have JSDoc/docstrings
97
97
  - [ ] README updated if new setup steps required
98
+ - [ ] No emoji in formal documentation or review summaries
99
+ - [ ] Documentation uses plain English and avoids AI cliches
100
+ - [ ] Performance/quality claims include source and timestamp
101
+ - [ ] Acronyms are expanded on first use
102
+ - [ ] Facts and assumptions are explicitly separated
@@ -25,6 +25,40 @@ REQUIRED: Documentation MUST be updated in the SAME commit as the endpoint chang
25
25
 
26
26
  ---
27
27
 
28
+ ## Human Writing Standard (Mandatory)
29
+
30
+ This standard applies to API docs, README updates, release notes, and technical explanations.
31
+
32
+ ### Style Baseline
33
+ 1. Write for native English speakers.
34
+ 2. Target an 8th-grade reading level.
35
+ 3. Use clear, direct, plain language.
36
+ 4. Keep sentence rhythm natural with short and medium sentences.
37
+ 5. Sound confident, practical, and conversational.
38
+
39
+ ### Required Behavior
40
+ 1. Explain decisions the way a competent coworker would explain them out loud.
41
+ 2. Cut unnecessary words and remove filler.
42
+ 3. Use concrete verbs and everyday phrasing.
43
+ 4. Rewrite and reorder content when flow is weak.
44
+
45
+ ### Hard Bans
46
+ 1. No emoji in formal artifacts.
47
+ 2. No AI cliches: delve, leverage, robust, utilize, seamless.
48
+ 3. No inflated, academic, or performative language.
49
+ 4. No padding, hedging, or redundant phrasing.
50
+
51
+ ### Critical Controls
52
+ 1. Any claim about quality, performance, or reliability must include a measurable source and timestamp.
53
+ 2. Expand acronyms on first use, then use terms consistently.
54
+ 3. Separate facts from assumptions explicitly.
55
+ 4. End major explanations with a clear next action.
56
+
57
+ ### Final Check
58
+ Read the text out loud before shipping. If it sounds robotic, rewrite it.
59
+
60
+ ---
61
+
28
62
  ## Documentation Format: OpenAPI 3.1 (Non-Negotiable)
29
63
 
30
64
  All APIs produce an OpenAPI 3.1 specification. Not 3.0, not proprietary formats, not "we'll add Swagger later."
@@ -19,6 +19,9 @@ Turn code review, planning, and benchmark output into explicit quality decisions
19
19
  - Benchmark deltas are explicit
20
20
  - Security findings stop release when critical
21
21
  - Release readiness verdict includes blockers, owner, and due date
22
+ - Formal review artifacts use plain, human-first language and avoid AI cliches
23
+ - No emoji in formal review output, release notes, and governance summaries
24
+ - Claims include measurable evidence with source and timestamp
22
25
 
23
26
  ## Evidence
24
27
  - PR review report
package/.cursorrules CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.0.7
3
+ Generated by Agentic-Senior-Core CLI v2.0.8
4
4
  Timestamp: 2026-04-08T14:58:53.570Z
5
5
  Selected profile: beginner
6
6
  Selected policy file: .agent-context/policies/llm-judge-threshold.json
@@ -2,7 +2,7 @@
2
2
 
3
3
  Adapter Mode: thin
4
4
  Adapter Source: .instructions.md
5
- Canonical Snapshot SHA256: 361ac86172268a2f20d4f7a1e407c7dd122f1b0c265d085e872254718b078d22
5
+ Canonical Snapshot SHA256: 08994f6e228b32d415dcc2024f31f0a076119a3cf87a4cd2fd2e78e86e5fbd3e
6
6
 
7
7
  Canonical policy source: [.instructions.md](../.instructions.md).
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Adapter Mode: thin
4
4
  Adapter Source: .instructions.md
5
- Canonical Snapshot SHA256: 361ac86172268a2f20d4f7a1e407c7dd122f1b0c265d085e872254718b078d22
5
+ Canonical Snapshot SHA256: 08994f6e228b32d415dcc2024f31f0a076119a3cf87a4cd2fd2e78e86e5fbd3e
6
6
 
7
7
  The canonical policy source for this repository is [.instructions.md](../.instructions.md).
8
8
 
@@ -18,4 +18,4 @@ The canonical policy source for this repository is [.instructions.md](../.instru
18
18
 
19
19
  ## Completion Gate
20
20
 
21
- Run [.agent-context/review-checklists/pr-checklist.md](../.agent-context/review-checklists/pr-checklist.md) before declaring work complete.
21
+ Run [.agent-context/review-checklists/pr-checklist.md](../.agent-context/review-checklists/pr-checklist.md) before declaring work complete.
package/.windsurfrules CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTIC-SENIOR-CORE DYNAMIC GOVERNANCE RULESET
2
2
 
3
- Generated by Agentic-Senior-Core CLI v2.0.7
3
+ Generated by Agentic-Senior-Core CLI v2.0.8
4
4
  Timestamp: 2026-04-08T14:58:53.570Z
5
5
  Selected profile: beginner
6
6
  Selected policy file: .agent-context/policies/llm-judge-threshold.json
package/AGENTS.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Adapter Mode: thin
4
4
  Adapter Source: .instructions.md
5
- Canonical Snapshot SHA256: 361ac86172268a2f20d4f7a1e407c7dd122f1b0c265d085e872254718b078d22
5
+ Canonical Snapshot SHA256: 08994f6e228b32d415dcc2024f31f0a076119a3cf87a4cd2fd2e78e86e5fbd3e
6
6
 
7
7
  This file is an adapter entrypoint for agent discovery.
8
8
  The canonical policy source is [.instructions.md](.instructions.md).
package/README.md CHANGED
@@ -119,6 +119,11 @@ npx @ryuenn3123/agentic-senior-core init --profile-pack startup
119
119
 
120
120
  The CLI is smart. It auto-detects your current development stack, helps you build a governance profile (select from `beginner`, `balanced`, or `strict`), and writes the compiled rules straight to your root automatically!
121
121
 
122
+ Important behavior:
123
+ - `init` does not copy repository workflows from this project into your target repository.
124
+ - MCP server registration is manual in IDE settings.
125
+ - If you want the MCP file scaffold, run `init` with `--mcp-template`.
126
+
122
127
  If you are totally new to concepts like blueprints and guardrails, no problem — just run:
123
128
  ```bash
124
129
  npx @ryuenn3123/agentic-senior-core init --newbie
@@ -266,6 +271,7 @@ Our documentation has shifted into dedicated tracks to keep this README light:
266
271
  - **Pre-Publish Safety:** Built-in forbidden content checks detect hardcoded secrets and stray debugger artifacts before hitting the NPM registry.
267
272
  - **Machine-Readable CI Output:** LLM Judge emits `JSON_REPORT` payloads and writes `.agent-context/state/llm-judge-report.json` for PR/MR annotation tooling.
268
273
  - **MCP Self-Healing Loop:** `mcp.json` defines diagnostics + fix proposal workflow when lint/CI fails.
274
+ - **MCP Registration Model:** IDE MCP server registration is manual; `mcp.json` is an optional template file (`--mcp-template`).
269
275
 
270
276
  ---
271
277
 
@@ -276,7 +282,7 @@ Our documentation has shifted into dedicated tracks to keep this README light:
276
282
  ├── .cursorrules # Dynamic compiled governance entry point
277
283
  ├── .windsurfrules # Dynamic compiled governance entry point
278
284
  ├── .agent-override.md # Team-specific exceptions (scoped + expiry)
279
- ├── mcp.json # MCP self-healing workflow config
285
+ ├── mcp.json # Optional MCP template file (copied with --mcp-template)
280
286
  ├── AGENTS.md # Universal agent discovery
281
287
  ├── .github/copilot-instructions.md # GitHub Copilot entry point
282
288
  ├── .gemini/instructions.md # Antigravity / Gemini entry point
@@ -57,6 +57,7 @@ export function parseInitArguments(commandArguments) {
57
57
  newbie: false,
58
58
  tokenOptimize: true,
59
59
  tokenAgent: 'copilot',
60
+ includeMcpTemplate: false,
60
61
  };
61
62
 
62
63
  for (let argumentIndex = 0; argumentIndex < commandArguments.length; argumentIndex++) {
@@ -160,6 +161,11 @@ export function parseInitArguments(commandArguments) {
160
161
  continue;
161
162
  }
162
163
 
164
+ if (currentArgument === '--mcp-template') {
165
+ parsedInitOptions.includeMcpTemplate = true;
166
+ continue;
167
+ }
168
+
163
169
  throw new Error(`Unknown option: ${currentArgument}`);
164
170
  }
165
171
 
@@ -177,6 +183,7 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
177
183
  const isTokenOptimizationEnabled = typeof initOptions.tokenOptimize === 'boolean'
178
184
  ? initOptions.tokenOptimize
179
185
  : true;
186
+ const shouldIncludeMcpTemplate = initOptions.includeMcpTemplate === true;
180
187
  const selectedTokenAgentName = normalizeAgentName(initOptions.tokenAgent || 'copilot');
181
188
 
182
189
  if (resolvedTargetDirectoryPath.toLowerCase() === 'c:\\windows' || resolvedTargetDirectoryPath.toLowerCase() === 'c:\\windows\\system32') {
@@ -348,7 +355,9 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
348
355
  ? selectedProfile.defaultCi
349
356
  : await askYesNo('Enable CI/CD guardrails and the LLM Judge policy?', userInterface, selectedProfile.defaultCi);
350
357
 
351
- await copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath);
358
+ await copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath, {
359
+ includeMcpTemplate: shouldIncludeMcpTemplate,
360
+ });
352
361
 
353
362
  if (isTokenOptimizationEnabled) {
354
363
  const detectedExternalProxy = detectRtkBinary();
@@ -419,6 +428,8 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
419
428
  console.log(`- Blocking severities: ${formatBlockingSeverities(selectedProfile.blockingSeverities)}`);
420
429
  console.log(`- Setup time: ${formatDuration(setupDurationMs)}`);
421
430
  console.log('- Generated files: .cursorrules, .windsurfrules, and .agent-context/state/onboarding-report.json');
431
+ console.log(`- Repository workflows copied: no (workflows remain source-repo assets)`);
432
+ console.log(`- MCP template file: ${shouldIncludeMcpTemplate ? 'copied (mcp.json)' : 'not copied by default (use --mcp-template)'}`);
422
433
  if (isTokenOptimizationEnabled) {
423
434
  console.log(`- Token optimization policy: enabled for ${selectedTokenAgentName}`);
424
435
  } else {
@@ -427,6 +438,7 @@ export async function runInitCommand(targetDirectoryArgument, initOptions = {})
427
438
  console.log('\nPlain-language summary:');
428
439
  console.log(`I prepared a ${selectedProfile.displayName.toLowerCase()} governance pack for a ${toTitleCase(selectedResolvedStackFileName)} project using the ${toTitleCase(selectedResolvedBlueprintFileName)} blueprint.`);
429
440
  console.log('Your AI tools will now receive one compiled rulebook plus the original source rules, and your review threshold is stored in .agent-context/policies/llm-judge-threshold.json.');
441
+ console.log('MCP server registration is manual inside your IDE settings, even when mcp.json exists.');
430
442
  } catch (error) {
431
443
  console.error('\n[FATAL] An error occurred during initialization. Attempting automatic rollback...');
432
444
  try {
@@ -43,6 +43,7 @@ export function parseUpgradeArguments(commandArguments) {
43
43
  targetDirectory: '.',
44
44
  dryRun: false,
45
45
  skipConfirmation: false,
46
+ includeMcpTemplate: false,
46
47
  };
47
48
 
48
49
  for (let argumentIndex = 0; argumentIndex < commandArguments.length; argumentIndex++) {
@@ -63,6 +64,11 @@ export function parseUpgradeArguments(commandArguments) {
63
64
  continue;
64
65
  }
65
66
 
67
+ if (currentArgument === '--mcp-template') {
68
+ parsedUpgradeOptions.includeMcpTemplate = true;
69
+ continue;
70
+ }
71
+
66
72
  throw new Error(`Unknown option: ${currentArgument}`);
67
73
  }
68
74
 
@@ -95,7 +101,9 @@ export async function runUpgradeCommand(targetDirectoryArgument, upgradeOptions
95
101
  console.log(`\nAgentic-Senior-Core CLI v${CLI_VERSION}`);
96
102
  console.log('Running upgrade assistant for an existing repository.');
97
103
 
98
- await copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath);
104
+ await copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath, {
105
+ includeMcpTemplate: upgradeOptions.includeMcpTemplate === true,
106
+ });
99
107
 
100
108
  const stackFileNames = await collectFileNames(path.join(AGENT_CONTEXT_DIR, 'stacks'));
101
109
  const blueprintFileNames = await collectFileNames(path.join(AGENT_CONTEXT_DIR, 'blueprints'));
@@ -164,8 +164,8 @@ export const entryPointFiles = [
164
164
  '.cursorrules',
165
165
  '.windsurfrules',
166
166
  'AGENTS.md',
167
+ '.github/copilot-instructions.md',
167
168
  '.agent-override.md',
168
- 'mcp.json',
169
169
  ];
170
170
 
171
- export const directoryCopies = ['.agent-context', '.github', '.gemini', '.agents'];
171
+ export const directoryCopies = ['.agent-context', '.gemini', '.agents'];
package/lib/cli/utils.mjs CHANGED
@@ -29,7 +29,7 @@ export function printUsage() {
29
29
  console.log('Usage:');
30
30
  console.log(' agentic-senior-core launch');
31
31
  console.log(' agentic-senior-core init [target-directory] [--preset <name>] [--profile <beginner|balanced|strict>] [--profile-pack <name>] [--stack <name>] [--blueprint <name>] [--ci <true|false>] [--newbie] [--token-optimize] [--no-token-optimize] [--token-agent <name>]');
32
- console.log(' agentic-senior-core upgrade [target-directory] [--dry-run] [--yes]');
32
+ console.log(' agentic-senior-core upgrade [target-directory] [--dry-run] [--yes] [--mcp-template]');
33
33
  console.log(' agentic-senior-core optimize [target-directory] [--agent <copilot|claude|cursor|windsurf|gemini|codex|cline>] [--enable|--disable] [--show]');
34
34
  console.log(' agentic-senior-core rollback [target-directory]');
35
35
  console.log(' agentic-senior-core skill [domain] [--tier <standard|advance|expert|above>] [--json]');
@@ -48,6 +48,7 @@ export function printUsage() {
48
48
  console.log(' --token-optimize Explicitly enable token optimization policy during init (default behavior)');
49
49
  console.log(' --token-agent Set token optimization agent target (copilot, claude, cursor, windsurf, gemini, codex, cline)');
50
50
  console.log(' --no-token-optimize Disable token optimization policy during init');
51
+ console.log(' --mcp-template Also copy mcp.json template (MCP server registration in IDE is still manual)');
51
52
  console.log(' --dry-run Preview upgrade without writing files');
52
53
  console.log(' --yes Skip confirmation prompts for upgrade');
53
54
  console.log(' --agent Target agent integration for token optimization mode');
@@ -96,7 +97,12 @@ export async function copyDirectory(sourceDirectoryPath, targetDirectoryPath) {
96
97
  }
97
98
  }
98
99
 
99
- export async function copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath) {
100
+ export async function copyGovernanceAssetsToTarget(
101
+ resolvedTargetDirectoryPath,
102
+ options = {}
103
+ ) {
104
+ const shouldIncludeMcpTemplate = options.includeMcpTemplate === true;
105
+
100
106
  for (const sourceDirectoryName of directoryCopies) {
101
107
  const sourceDirectoryPath = path.join(REPO_ROOT, sourceDirectoryName);
102
108
  if (!(await pathExists(sourceDirectoryPath))) {
@@ -121,6 +127,18 @@ export async function copyGovernanceAssetsToTarget(resolvedTargetDirectoryPath)
121
127
  await ensureDirectory(path.dirname(targetFilePath));
122
128
  await fs.copyFile(sourceFilePath, targetFilePath);
123
129
  }
130
+
131
+ if (shouldIncludeMcpTemplate) {
132
+ const sourceMcpPath = path.join(REPO_ROOT, 'mcp.json');
133
+ const targetMcpPath = path.join(resolvedTargetDirectoryPath, 'mcp.json');
134
+
135
+ if (
136
+ await pathExists(sourceMcpPath)
137
+ && path.resolve(sourceMcpPath) !== path.resolve(targetMcpPath)
138
+ ) {
139
+ await fs.copyFile(sourceMcpPath, targetMcpPath);
140
+ }
141
+ }
124
142
  }
125
143
 
126
144
  export async function askChoice(promptMessage, options, userInterface) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuenn3123/agentic-senior-core",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "type": "module",
5
5
  "description": "Force your AI Agent to code like a Staff Engineer, not a Junior.",
6
6
  "bin": {
@@ -39,6 +39,33 @@ const THIN_ADAPTER_PATHS = [
39
39
  '.github/copilot-instructions.md',
40
40
  '.gemini/instructions.md',
41
41
  ];
42
+ const FORMAL_ARTIFACT_PATHS = [
43
+ '.instructions.md',
44
+ 'README.md',
45
+ 'CHANGELOG.md',
46
+ 'docs/deep_analysis_and_roadmap_backlog.md',
47
+ '.agent-context/rules/api-docs.md',
48
+ '.agent-context/review-checklists/pr-checklist.md',
49
+ '.agent-context/prompts/review-code.md',
50
+ '.agent-context/skills/review-quality.md',
51
+ 'AGENTS.md',
52
+ '.github/copilot-instructions.md',
53
+ '.gemini/instructions.md',
54
+ ];
55
+ const REQUIRED_HUMAN_WRITING_SNIPPETS = [
56
+ {
57
+ path: '.agent-context/rules/api-docs.md',
58
+ snippets: ['## Human Writing Standard (Mandatory)', 'No emoji in formal artifacts.'],
59
+ },
60
+ {
61
+ path: '.agent-context/review-checklists/pr-checklist.md',
62
+ snippets: ['No emoji in formal documentation or review summaries', 'Documentation uses plain English and avoids AI cliches'],
63
+ },
64
+ {
65
+ path: 'docs/deep_analysis_and_roadmap_backlog.md',
66
+ snippets: ['## Part 6: Documentation and Explanation Standards (Mandatory)', 'No emoji in formal artifacts. This is mandatory.'],
67
+ },
68
+ ];
42
69
 
43
70
  const validationResult = {
44
71
  passed: 0,
@@ -687,6 +714,46 @@ async function validateMcpConfiguration() {
687
714
  }
688
715
  }
689
716
 
717
+ async function validateHumanWritingGovernance() {
718
+ console.log('\nChecking human writing governance...');
719
+
720
+ const disallowedEmojiPattern = /[\u2705\u274C\u26A0\u{1F4CC}\u{1F536}\u{1F4CE}\u{1F534}\u{1F7E0}\u{1F7E1}\u{1F7E2}]/u;
721
+
722
+ for (const formalArtifactPath of FORMAL_ARTIFACT_PATHS) {
723
+ const absoluteFormalArtifactPath = join(ROOT_DIR, formalArtifactPath);
724
+
725
+ if (!(await fileExists(absoluteFormalArtifactPath))) {
726
+ fail(`Missing formal artifact for writing governance: ${formalArtifactPath}`);
727
+ continue;
728
+ }
729
+
730
+ const formalArtifactContent = await readTextFile(absoluteFormalArtifactPath);
731
+
732
+ if (disallowedEmojiPattern.test(formalArtifactContent)) {
733
+ fail(`${formalArtifactPath} contains disallowed emoji symbols in formal text`);
734
+ } else {
735
+ pass(`${formalArtifactPath} has no disallowed emoji symbols`);
736
+ }
737
+ }
738
+
739
+ for (const snippetRule of REQUIRED_HUMAN_WRITING_SNIPPETS) {
740
+ const absoluteRulePath = join(ROOT_DIR, snippetRule.path);
741
+ if (!(await fileExists(absoluteRulePath))) {
742
+ fail(`Missing writing governance source: ${snippetRule.path}`);
743
+ continue;
744
+ }
745
+
746
+ const writingRuleContent = await readTextFile(absoluteRulePath);
747
+ for (const requiredSnippet of snippetRule.snippets) {
748
+ if (writingRuleContent.includes(requiredSnippet)) {
749
+ pass(`${snippetRule.path} includes writing governance snippet: ${requiredSnippet}`);
750
+ } else {
751
+ fail(`${snippetRule.path} is missing writing governance snippet: ${requiredSnippet}`);
752
+ }
753
+ }
754
+ }
755
+ }
756
+
690
757
  async function validateInstructionAdapters() {
691
758
  console.log('\nChecking instruction adapter consolidation...');
692
759
 
@@ -848,6 +915,7 @@ async function main() {
848
915
  await validateVersionConsistency();
849
916
  await validateDocumentationFlow();
850
917
  await validateMcpConfiguration();
918
+ await validateHumanWritingGovernance();
851
919
  await validateInstructionAdapters();
852
920
  await validateTrustTierSchema();
853
921
  await validateEvidenceBundles();