@ryuenn3123/agentic-senior-core 2.0.5 → 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.
Files changed (126) hide show
  1. package/.agent-context/blueprints/mobile-app.md +91 -21
  2. package/.agent-context/profiles/platform.md +13 -13
  3. package/.agent-context/profiles/regulated.md +13 -13
  4. package/.agent-context/profiles/startup.md +13 -13
  5. package/.agent-context/prompts/review-code.md +3 -3
  6. package/.agent-context/review-checklists/frontend-skill-parity.md +28 -28
  7. package/.agent-context/review-checklists/frontend-usability.md +33 -33
  8. package/.agent-context/review-checklists/pr-checklist.md +11 -6
  9. package/.agent-context/review-checklists/release-operations.md +29 -29
  10. package/.agent-context/rules/api-docs.md +34 -0
  11. package/.agent-context/skills/README.md +62 -62
  12. package/.agent-context/skills/backend/README.md +67 -67
  13. package/.agent-context/skills/backend/architecture.md +360 -360
  14. package/.agent-context/skills/backend/compatibility-manifest.json +8 -8
  15. package/.agent-context/skills/backend/data-access.md +230 -230
  16. package/.agent-context/skills/backend/errors.md +137 -137
  17. package/.agent-context/skills/backend/validation.md +116 -116
  18. package/.agent-context/skills/backend.md +28 -28
  19. package/.agent-context/skills/cli/README.md +55 -49
  20. package/.agent-context/skills/cli/compatibility-manifest.json +8 -8
  21. package/.agent-context/skills/cli/init.md +37 -37
  22. package/.agent-context/skills/cli/output.md +35 -35
  23. package/.agent-context/skills/cli/safety-telemetry.md +39 -0
  24. package/.agent-context/skills/cli/upgrade.md +37 -37
  25. package/.agent-context/skills/cli.md +31 -28
  26. package/.agent-context/skills/distribution/.evidence/compatibility-manifest.json +9 -0
  27. package/.agent-context/skills/distribution/.evidence/sbom-excerpt.json +6 -0
  28. package/.agent-context/skills/distribution/.evidence/test-report.json +8 -0
  29. package/.agent-context/skills/distribution/CHANGELOG.md +7 -0
  30. package/.agent-context/skills/distribution/README.md +27 -19
  31. package/.agent-context/skills/distribution/compatibility-manifest.json +8 -8
  32. package/.agent-context/skills/distribution/compatibility.md +31 -31
  33. package/.agent-context/skills/distribution/package.json +5 -0
  34. package/.agent-context/skills/distribution/provenance-attestation.md +47 -0
  35. package/.agent-context/skills/distribution/publish.md +36 -36
  36. package/.agent-context/skills/distribution/rollback.md +31 -31
  37. package/.agent-context/skills/distribution/tests/.gitkeep +1 -0
  38. package/.agent-context/skills/distribution.md +31 -28
  39. package/.agent-context/skills/frontend/.evidence/compatibility-manifest.json +9 -0
  40. package/.agent-context/skills/frontend/.evidence/sbom-excerpt.json +6 -0
  41. package/.agent-context/skills/frontend/.evidence/test-report.json +8 -0
  42. package/.agent-context/skills/frontend/CHANGELOG.md +7 -0
  43. package/.agent-context/skills/frontend/README.md +49 -36
  44. package/.agent-context/skills/frontend/accessibility.md +107 -107
  45. package/.agent-context/skills/frontend/compatibility-manifest.json +8 -8
  46. package/.agent-context/skills/frontend/conversion-clarity.md +51 -0
  47. package/.agent-context/skills/frontend/motion.md +66 -66
  48. package/.agent-context/skills/frontend/package.json +5 -0
  49. package/.agent-context/skills/frontend/performance.md +62 -62
  50. package/.agent-context/skills/frontend/responsive-delivery.md +41 -0
  51. package/.agent-context/skills/frontend/tests/.gitkeep +1 -0
  52. package/.agent-context/skills/frontend/ui-architecture.md +128 -128
  53. package/.agent-context/skills/frontend.md +35 -29
  54. package/.agent-context/skills/fullstack/.evidence/compatibility-manifest.json +9 -0
  55. package/.agent-context/skills/fullstack/.evidence/sbom-excerpt.json +6 -0
  56. package/.agent-context/skills/fullstack/.evidence/test-report.json +8 -0
  57. package/.agent-context/skills/fullstack/CHANGELOG.md +7 -0
  58. package/.agent-context/skills/fullstack/README.md +27 -19
  59. package/.agent-context/skills/fullstack/compatibility-manifest.json +8 -8
  60. package/.agent-context/skills/fullstack/contracts.md +52 -52
  61. package/.agent-context/skills/fullstack/end-to-end.md +41 -41
  62. package/.agent-context/skills/fullstack/feature-slicing.md +64 -64
  63. package/.agent-context/skills/fullstack/package.json +5 -0
  64. package/.agent-context/skills/fullstack/release-coordination.md +51 -0
  65. package/.agent-context/skills/fullstack/tests/.gitkeep +1 -0
  66. package/.agent-context/skills/fullstack.md +29 -26
  67. package/.agent-context/skills/index.json +107 -107
  68. package/.agent-context/skills/review-quality/.evidence/compatibility-manifest.json +9 -0
  69. package/.agent-context/skills/review-quality/.evidence/sbom-excerpt.json +6 -0
  70. package/.agent-context/skills/review-quality/.evidence/test-report.json +8 -0
  71. package/.agent-context/skills/review-quality/CHANGELOG.md +7 -0
  72. package/.agent-context/skills/review-quality/README.md +27 -19
  73. package/.agent-context/skills/review-quality/benchmark.md +29 -29
  74. package/.agent-context/skills/review-quality/compatibility-manifest.json +8 -8
  75. package/.agent-context/skills/review-quality/package.json +5 -0
  76. package/.agent-context/skills/review-quality/planning.md +37 -37
  77. package/.agent-context/skills/review-quality/release-decision.md +49 -0
  78. package/.agent-context/skills/review-quality/security.md +33 -33
  79. package/.agent-context/skills/review-quality/tests/.gitkeep +1 -0
  80. package/.agent-context/skills/review-quality.md +33 -27
  81. package/.agent-context/stacks/flutter.md +16 -16
  82. package/.agent-context/stacks/react-native.md +16 -16
  83. package/.agent-context/state/architecture-map.md +25 -25
  84. package/.agent-context/state/benchmark-analysis.json +431 -431
  85. package/.agent-context/state/benchmark-thresholds.json +10 -10
  86. package/.agent-context/state/benchmark-watchlist.json +19 -19
  87. package/.agent-context/state/dependency-map.md +32 -32
  88. package/.agent-context/state/quality-trend-report.json +16 -6
  89. package/.agent-context/state/skill-platform.json +38 -38
  90. package/.agent-context/state/weekly-governance-report.json +126 -0
  91. package/.agent-override.md +36 -36
  92. package/.cursorrules +1 -1
  93. package/.gemini/instructions.md +20 -20
  94. package/.github/ISSUE_TEMPLATE/v1.7-frontend-work-item.yml +54 -54
  95. package/.github/copilot-instructions.md +21 -21
  96. package/.github/workflows/benchmark-detection.yml +38 -38
  97. package/.github/workflows/benchmark-intelligence.yml +50 -50
  98. package/.github/workflows/frontend-usability-gate.yml +36 -36
  99. package/.github/workflows/governance-weekly-report.yml +43 -0
  100. package/.github/workflows/release-gate.yml +32 -32
  101. package/.github/workflows/sbom-compliance.yml +32 -32
  102. package/.windsurfrules +1 -1
  103. package/AGENTS.md +27 -27
  104. package/README.md +389 -368
  105. package/lib/cli/commands/init.mjs +13 -1
  106. package/lib/cli/commands/optimize.mjs +171 -171
  107. package/lib/cli/commands/upgrade.mjs +9 -1
  108. package/lib/cli/compatibility.mjs +124 -124
  109. package/lib/cli/constants.mjs +37 -2
  110. package/lib/cli/token-optimization.mjs +275 -275
  111. package/lib/cli/utils.mjs +24 -3
  112. package/mcp.json +92 -92
  113. package/package.json +2 -1
  114. package/scripts/benchmark-gate.mjs +121 -121
  115. package/scripts/benchmark-intelligence.mjs +140 -140
  116. package/scripts/detection-benchmark.mjs +138 -138
  117. package/scripts/frontend-usability-audit.mjs +87 -87
  118. package/scripts/generate-sbom.mjs +61 -61
  119. package/scripts/governance-weekly-report.mjs +293 -0
  120. package/scripts/init-project.ps1 +104 -104
  121. package/scripts/llm-judge.mjs +664 -664
  122. package/scripts/quality-trend-report.mjs +288 -288
  123. package/scripts/release-gate.mjs +261 -259
  124. package/scripts/skill-tier-policy.mjs +75 -75
  125. package/scripts/token-optimization-benchmark.mjs +252 -252
  126. package/scripts/validate.mjs +942 -865
@@ -1,124 +1,124 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { platform, version } from 'node:process';
4
-
5
- import { pathExists } from './utils.mjs';
6
-
7
- export const SKILL_COMPATIBILITY_MANIFEST_FILE_NAME = 'compatibility-manifest.json';
8
-
9
- export function getCurrentPlatformLabel() {
10
- if (platform === 'win32') {
11
- return 'windows';
12
- }
13
-
14
- if (platform === 'darwin') {
15
- return 'macos';
16
- }
17
-
18
- return 'linux';
19
- }
20
-
21
- export function parseNodeMajorVersion(rawVersionString = version) {
22
- const normalizedVersionString = String(rawVersionString || '').trim();
23
- const numericVersion = normalizedVersionString.startsWith('v')
24
- ? normalizedVersionString.slice(1)
25
- : normalizedVersionString;
26
-
27
- const majorSegment = numericVersion.split('.')[0];
28
- const parsedMajorVersion = Number.parseInt(majorSegment, 10);
29
- return Number.isNaN(parsedMajorVersion) ? null : parsedMajorVersion;
30
- }
31
-
32
- export function parseNodeMinimumMajor(rawNodeMinimum) {
33
- const normalizedNodeMinimum = String(rawNodeMinimum || '').trim();
34
- if (!normalizedNodeMinimum) {
35
- return null;
36
- }
37
-
38
- const majorSegment = normalizedNodeMinimum.split('.')[0];
39
- const parsedMajorVersion = Number.parseInt(majorSegment, 10);
40
- return Number.isNaN(parsedMajorVersion) ? null : parsedMajorVersion;
41
- }
42
-
43
- export async function readSkillDomainCompatibilityManifest(targetDirectoryPath, skillDomainName) {
44
- const compatibilityManifestPath = path.join(
45
- targetDirectoryPath,
46
- '.agent-context',
47
- 'skills',
48
- skillDomainName,
49
- SKILL_COMPATIBILITY_MANIFEST_FILE_NAME
50
- );
51
-
52
- if (!(await pathExists(compatibilityManifestPath))) {
53
- return {
54
- exists: false,
55
- compatibilityManifestPath,
56
- parsedManifest: null,
57
- };
58
- }
59
-
60
- try {
61
- const compatibilityManifestContent = await fs.readFile(compatibilityManifestPath, 'utf8');
62
- return {
63
- exists: true,
64
- compatibilityManifestPath,
65
- parsedManifest: JSON.parse(compatibilityManifestContent),
66
- };
67
- } catch (error) {
68
- return {
69
- exists: true,
70
- compatibilityManifestPath,
71
- parsedManifest: null,
72
- parseError: error instanceof Error ? error.message : String(error),
73
- };
74
- }
75
- }
76
-
77
- export async function evaluateSkillDomainCompatibility(targetDirectoryPath, skillDomainNames) {
78
- const uniqueSkillDomainNames = Array.from(new Set(skillDomainNames || []));
79
- const compatibilityWarnings = [];
80
-
81
- const currentPlatformLabel = getCurrentPlatformLabel();
82
- const currentNodeMajorVersion = parseNodeMajorVersion(version);
83
-
84
- for (const skillDomainName of uniqueSkillDomainNames) {
85
- const manifestResult = await readSkillDomainCompatibilityManifest(targetDirectoryPath, skillDomainName);
86
-
87
- if (!manifestResult.exists) {
88
- compatibilityWarnings.push(
89
- `Domain ${skillDomainName} has no ${SKILL_COMPATIBILITY_MANIFEST_FILE_NAME}; compatibility cannot be verified.`
90
- );
91
- continue;
92
- }
93
-
94
- if (!manifestResult.parsedManifest) {
95
- compatibilityWarnings.push(
96
- `Domain ${skillDomainName} has invalid ${SKILL_COMPATIBILITY_MANIFEST_FILE_NAME}: ${manifestResult.parseError || 'Unknown parse error'}.`
97
- );
98
- continue;
99
- }
100
-
101
- const manifestPlatforms = Array.isArray(manifestResult.parsedManifest.platforms)
102
- ? manifestResult.parsedManifest.platforms
103
- : [];
104
-
105
- if (manifestPlatforms.length > 0 && !manifestPlatforms.includes(currentPlatformLabel)) {
106
- compatibilityWarnings.push(
107
- `Domain ${skillDomainName} does not list platform ${currentPlatformLabel} in ${SKILL_COMPATIBILITY_MANIFEST_FILE_NAME}.`
108
- );
109
- }
110
-
111
- const minimumNodeMajorVersion = parseNodeMinimumMajor(manifestResult.parsedManifest.nodeMin);
112
- if (
113
- typeof minimumNodeMajorVersion === 'number'
114
- && typeof currentNodeMajorVersion === 'number'
115
- && currentNodeMajorVersion < minimumNodeMajorVersion
116
- ) {
117
- compatibilityWarnings.push(
118
- `Domain ${skillDomainName} requires Node.js >= ${minimumNodeMajorVersion}, current major version is ${currentNodeMajorVersion}.`
119
- );
120
- }
121
- }
122
-
123
- return compatibilityWarnings;
124
- }
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { platform, version } from 'node:process';
4
+
5
+ import { pathExists } from './utils.mjs';
6
+
7
+ export const SKILL_COMPATIBILITY_MANIFEST_FILE_NAME = 'compatibility-manifest.json';
8
+
9
+ export function getCurrentPlatformLabel() {
10
+ if (platform === 'win32') {
11
+ return 'windows';
12
+ }
13
+
14
+ if (platform === 'darwin') {
15
+ return 'macos';
16
+ }
17
+
18
+ return 'linux';
19
+ }
20
+
21
+ export function parseNodeMajorVersion(rawVersionString = version) {
22
+ const normalizedVersionString = String(rawVersionString || '').trim();
23
+ const numericVersion = normalizedVersionString.startsWith('v')
24
+ ? normalizedVersionString.slice(1)
25
+ : normalizedVersionString;
26
+
27
+ const majorSegment = numericVersion.split('.')[0];
28
+ const parsedMajorVersion = Number.parseInt(majorSegment, 10);
29
+ return Number.isNaN(parsedMajorVersion) ? null : parsedMajorVersion;
30
+ }
31
+
32
+ export function parseNodeMinimumMajor(rawNodeMinimum) {
33
+ const normalizedNodeMinimum = String(rawNodeMinimum || '').trim();
34
+ if (!normalizedNodeMinimum) {
35
+ return null;
36
+ }
37
+
38
+ const majorSegment = normalizedNodeMinimum.split('.')[0];
39
+ const parsedMajorVersion = Number.parseInt(majorSegment, 10);
40
+ return Number.isNaN(parsedMajorVersion) ? null : parsedMajorVersion;
41
+ }
42
+
43
+ export async function readSkillDomainCompatibilityManifest(targetDirectoryPath, skillDomainName) {
44
+ const compatibilityManifestPath = path.join(
45
+ targetDirectoryPath,
46
+ '.agent-context',
47
+ 'skills',
48
+ skillDomainName,
49
+ SKILL_COMPATIBILITY_MANIFEST_FILE_NAME
50
+ );
51
+
52
+ if (!(await pathExists(compatibilityManifestPath))) {
53
+ return {
54
+ exists: false,
55
+ compatibilityManifestPath,
56
+ parsedManifest: null,
57
+ };
58
+ }
59
+
60
+ try {
61
+ const compatibilityManifestContent = await fs.readFile(compatibilityManifestPath, 'utf8');
62
+ return {
63
+ exists: true,
64
+ compatibilityManifestPath,
65
+ parsedManifest: JSON.parse(compatibilityManifestContent),
66
+ };
67
+ } catch (error) {
68
+ return {
69
+ exists: true,
70
+ compatibilityManifestPath,
71
+ parsedManifest: null,
72
+ parseError: error instanceof Error ? error.message : String(error),
73
+ };
74
+ }
75
+ }
76
+
77
+ export async function evaluateSkillDomainCompatibility(targetDirectoryPath, skillDomainNames) {
78
+ const uniqueSkillDomainNames = Array.from(new Set(skillDomainNames || []));
79
+ const compatibilityWarnings = [];
80
+
81
+ const currentPlatformLabel = getCurrentPlatformLabel();
82
+ const currentNodeMajorVersion = parseNodeMajorVersion(version);
83
+
84
+ for (const skillDomainName of uniqueSkillDomainNames) {
85
+ const manifestResult = await readSkillDomainCompatibilityManifest(targetDirectoryPath, skillDomainName);
86
+
87
+ if (!manifestResult.exists) {
88
+ compatibilityWarnings.push(
89
+ `Domain ${skillDomainName} has no ${SKILL_COMPATIBILITY_MANIFEST_FILE_NAME}; compatibility cannot be verified.`
90
+ );
91
+ continue;
92
+ }
93
+
94
+ if (!manifestResult.parsedManifest) {
95
+ compatibilityWarnings.push(
96
+ `Domain ${skillDomainName} has invalid ${SKILL_COMPATIBILITY_MANIFEST_FILE_NAME}: ${manifestResult.parseError || 'Unknown parse error'}.`
97
+ );
98
+ continue;
99
+ }
100
+
101
+ const manifestPlatforms = Array.isArray(manifestResult.parsedManifest.platforms)
102
+ ? manifestResult.parsedManifest.platforms
103
+ : [];
104
+
105
+ if (manifestPlatforms.length > 0 && !manifestPlatforms.includes(currentPlatformLabel)) {
106
+ compatibilityWarnings.push(
107
+ `Domain ${skillDomainName} does not list platform ${currentPlatformLabel} in ${SKILL_COMPATIBILITY_MANIFEST_FILE_NAME}.`
108
+ );
109
+ }
110
+
111
+ const minimumNodeMajorVersion = parseNodeMinimumMajor(manifestResult.parsedManifest.nodeMin);
112
+ if (
113
+ typeof minimumNodeMajorVersion === 'number'
114
+ && typeof currentNodeMajorVersion === 'number'
115
+ && currentNodeMajorVersion < minimumNodeMajorVersion
116
+ ) {
117
+ compatibilityWarnings.push(
118
+ `Domain ${skillDomainName} requires Node.js >= ${minimumNodeMajorVersion}, current major version is ${currentNodeMajorVersion}.`
119
+ );
120
+ }
121
+ }
122
+
123
+ return compatibilityWarnings;
124
+ }
@@ -93,6 +93,41 @@ export const INIT_PRESETS = {
93
93
  ci: true,
94
94
  description: 'Observability and platform starter',
95
95
  },
96
+ 'typescript-nestjs-service': {
97
+ profile: 'balanced',
98
+ stack: 'typescript.md',
99
+ blueprint: 'nestjs-logic.md',
100
+ ci: true,
101
+ description: 'TypeScript service starter with NestJS module blueprint',
102
+ },
103
+ 'java-enterprise-api': {
104
+ profile: 'strict',
105
+ stack: 'java.md',
106
+ blueprint: 'spring-boot-api.md',
107
+ ci: true,
108
+ description: 'Enterprise API starter for JVM teams',
109
+ },
110
+ 'dotnet-enterprise-api': {
111
+ profile: 'strict',
112
+ stack: 'csharp.md',
113
+ blueprint: 'aspnet-api.md',
114
+ ci: true,
115
+ description: '.NET API starter with strict governance defaults',
116
+ },
117
+ 'php-laravel-api': {
118
+ profile: 'balanced',
119
+ stack: 'php.md',
120
+ blueprint: 'laravel-api.md',
121
+ ci: true,
122
+ description: 'Laravel API starter with balanced guardrails',
123
+ },
124
+ 'kubernetes-platform': {
125
+ profile: 'strict',
126
+ stack: 'go.md',
127
+ blueprint: 'kubernetes-manifests.md',
128
+ ci: true,
129
+ description: 'Platform starter focused on Kubernetes delivery assets',
130
+ },
96
131
  };
97
132
 
98
133
  export const PROFILE_PRESETS = {
@@ -129,8 +164,8 @@ export const entryPointFiles = [
129
164
  '.cursorrules',
130
165
  '.windsurfrules',
131
166
  'AGENTS.md',
167
+ '.github/copilot-instructions.md',
132
168
  '.agent-override.md',
133
- 'mcp.json',
134
169
  ];
135
170
 
136
- export const directoryCopies = ['.agent-context', '.github', '.gemini', '.agents'];
171
+ export const directoryCopies = ['.agent-context', '.gemini', '.agents'];