memory-journal-mcp 7.1.0 → 7.3.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/README.md +59 -51
- package/dist/{chunk-GW5DYUQJ.js → chunk-CHWIPVQN.js} +174 -74
- package/dist/{chunk-37BQOJDZ.js → chunk-WXDEVIFL.js} +87 -8
- package/dist/{chunk-JEGRDY6W.js → chunk-ZJJD2F5T.js} +487 -89
- package/dist/cli.js +30 -4
- package/dist/github-integration-YODGZH3K.js +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +3 -3
- package/dist/{tools-O44Q52RD.js → tools-MNMGDTQI.js} +2 -2
- package/package.json +4 -4
- package/skills/README.md +77 -0
- package/skills/autonomous-dev/SKILL.md +56 -0
- package/skills/bin/sync.js +50 -0
- package/skills/bun/SKILL.md +156 -0
- package/skills/github-commander/SKILL.md +1 -1
- package/skills/github-commander/workflows/code-quality-audit.md +7 -5
- package/skills/github-commander/workflows/issue-triage.md +13 -4
- package/skills/github-commander/workflows/milestone-sprint.md +9 -1
- package/skills/github-commander/workflows/perf-audit.md +2 -0
- package/skills/github-commander/workflows/pr-review.md +9 -3
- package/skills/github-commander/workflows/roadmap-kickoff.md +79 -0
- package/skills/github-commander/workflows/security-audit.md +3 -3
- package/skills/github-commander/workflows/update-deps.md +2 -2
- package/skills/gitlab/SKILL.md +115 -0
- package/skills/gitlab/package-lock.json +392 -0
- package/skills/gitlab/package.json +14 -0
- package/skills/gitlab/scripts/gitlab-client.ts +125 -0
- package/skills/gitlab/scripts/gitlab-helper.ts +80 -0
- package/skills/golang/SKILL.md +54 -0
- package/skills/mysql/SKILL.md +30 -0
- package/skills/package.json +48 -0
- package/skills/playwright-standard/SKILL.md +58 -0
- package/skills/playwright-standard/examples/fixtures.ts +66 -0
- package/skills/playwright-standard/examples/type-stubs.d.ts +10 -0
- package/skills/playwright-standard/references/advanced-scenarios.md +59 -0
- package/skills/playwright-standard/references/infrastructure.md +43 -0
- package/skills/postgres/SKILL.md +33 -0
- package/skills/react-best-practices/AGENTS.md +2883 -0
- package/skills/react-best-practices/README.md +127 -0
- package/skills/react-best-practices/SKILL.md +138 -0
- package/skills/react-best-practices/metadata.json +17 -0
- package/skills/react-best-practices/rules/_sections.md +46 -0
- package/skills/react-best-practices/rules/_template.md +28 -0
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/react-best-practices/rules/async-api-routes.md +35 -0
- package/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/react-best-practices/rules/async-dependencies.md +48 -0
- package/skills/react-best-practices/rules/async-parallel.md +24 -0
- package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +37 -0
- package/skills/react-best-practices/rules/bundle-defer-third-party.md +48 -0
- package/skills/react-best-practices/rules/bundle-dynamic-imports.md +34 -0
- package/skills/react-best-practices/rules/bundle-preload.md +44 -0
- package/skills/react-best-practices/rules/client-event-listeners.md +78 -0
- package/skills/react-best-practices/rules/client-localstorage-schema.md +74 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +110 -0
- package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/react-best-practices/rules/js-cache-storage.md +68 -0
- package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/react-best-practices/rules/js-length-check-first.md +50 -0
- package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/react-best-practices/rules/rendering-activity.md +24 -0
- package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +38 -0
- package/skills/react-best-practices/rules/rendering-conditional-render.md +32 -0
- package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/react-best-practices/rules/rendering-hoist-jsx.md +36 -0
- package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +72 -0
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +26 -0
- package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/react-best-practices/rules/rerender-functional-setstate.md +77 -0
- package/skills/react-best-practices/rules/rerender-lazy-state-init.md +56 -0
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +36 -0
- package/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/rust/SKILL.md +86 -0
- package/skills/shadcn-ui/SKILL.md +72 -0
- package/skills/skill-builder/SKILL.md +457 -0
- package/skills/skill-builder/checklist.md +65 -0
- package/skills/sqlite/SKILL.md +38 -0
- package/skills/typescript/SKILL.md +453 -0
- package/skills/typescript/assets/eslint-template.js +102 -0
- package/skills/typescript/assets/tsconfig-template.json +45 -0
- package/skills/typescript/references/enterprise-patterns.md +531 -0
- package/skills/typescript/references/generics.md +493 -0
- package/skills/typescript/references/nestjs-integration.md +579 -0
- package/skills/typescript/references/react-integration.md +616 -0
- package/skills/typescript/references/toolchain.md +547 -0
- package/skills/typescript/references/type-system.md +481 -0
- package/skills/vitest-standard/SKILL.md +82 -0
- package/skills/vitest-standard/examples/service-mock.ts +60 -0
- package/skills/vitest-standard/examples/tdd-calculator.ts +41 -0
- package/skills/vitest-standard/examples/type-stubs.d.ts +18 -0
- package/skills/vitest-standard/references/async-and-errors.md +58 -0
- package/skills/vitest-standard/references/coverage-and-config.md +53 -0
- package/skills/vitest-standard/references/mocking.md +61 -0
- package/skills/vitest-standard/references/tdd-patterns.md +60 -0
- package/dist/github-integration-FOJ4U6I5.js +0 -1
- package/skills/github-commander/workflows/full-audit.md +0 -134
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { VERSION, createServer } from './chunk-
|
|
2
|
-
import { DEFAULT_AUDIT_LOG_MAX_SIZE_BYTES } from './chunk-
|
|
1
|
+
import { VERSION, createServer } from './chunk-CHWIPVQN.js';
|
|
2
|
+
import { DEFAULT_AUDIT_LOG_MAX_SIZE_BYTES } from './chunk-ZJJD2F5T.js';
|
|
3
3
|
import './chunk-OKOVZ5QE.js';
|
|
4
|
-
import { logger } from './chunk-
|
|
4
|
+
import { logger } from './chunk-WXDEVIFL.js';
|
|
5
5
|
import { Command } from 'commander';
|
|
6
6
|
import * as fs from 'fs';
|
|
7
7
|
|
|
@@ -39,6 +39,9 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
39
39
|
"--sandbox-mode <mode>",
|
|
40
40
|
'Code Mode sandbox: "worker" (production, default) or "vm" (lightweight)',
|
|
41
41
|
"worker"
|
|
42
|
+
).option(
|
|
43
|
+
"--codemode-max-result-size <bytes>",
|
|
44
|
+
"Maximum Code Mode result size in bytes (default: 102400 / 100KB, env: CODE_MODE_MAX_RESULT_SIZE)"
|
|
42
45
|
).option("--oauth-enabled", "Enable OAuth 2.1 authentication (env: OAUTH_ENABLED)").option("--oauth-issuer <url>", "OAuth issuer URL (env: OAUTH_ISSUER)").option("--oauth-audience <audience>", "OAuth audience (env: OAUTH_AUDIENCE)").option("--oauth-jwks-uri <uri>", "OAuth JWKS URI (env: OAUTH_JWKS_URI)").option(
|
|
43
46
|
"--oauth-clock-tolerance <seconds>",
|
|
44
47
|
"OAuth clock tolerance in seconds (default: 60)",
|
|
@@ -61,6 +64,10 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
61
64
|
"--briefing-entries <count>",
|
|
62
65
|
"Number of journal entries in briefing (env: BRIEFING_ENTRY_COUNT)",
|
|
63
66
|
"3"
|
|
67
|
+
).option(
|
|
68
|
+
"--briefing-summaries <count>",
|
|
69
|
+
"Number of session summaries to show in briefing (env: BRIEFING_SUMMARY_COUNT)",
|
|
70
|
+
"1"
|
|
64
71
|
).option(
|
|
65
72
|
"--briefing-include-team",
|
|
66
73
|
"Include team DB entries in briefing (env: BRIEFING_INCLUDE_TEAM)"
|
|
@@ -75,6 +82,10 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
75
82
|
).option(
|
|
76
83
|
"--briefing-pr-status",
|
|
77
84
|
"Show PR status breakdown in briefing (env: BRIEFING_PR_STATUS)"
|
|
85
|
+
).option(
|
|
86
|
+
"--briefing-milestones <count>",
|
|
87
|
+
"Number of milestones to list in briefing; 0 = hide (env: BRIEFING_MILESTONE_COUNT)",
|
|
88
|
+
"3"
|
|
78
89
|
).option(
|
|
79
90
|
"--rules-file <path>",
|
|
80
91
|
"Path to user rules file for awareness in briefing (env: RULES_FILE_PATH)"
|
|
@@ -106,6 +117,10 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
106
117
|
...options.teamDb ? { teamDb: options.teamDb } : {},
|
|
107
118
|
...host ? { host } : {}
|
|
108
119
|
});
|
|
120
|
+
const codemodeMaxResultSize = options.codemodeMaxResultSize ?? process.env["CODE_MODE_MAX_RESULT_SIZE"];
|
|
121
|
+
if (codemodeMaxResultSize) {
|
|
122
|
+
process.env["CODE_MODE_MAX_RESULT_SIZE"] = codemodeMaxResultSize;
|
|
123
|
+
}
|
|
109
124
|
try {
|
|
110
125
|
const auditLogPath = options.auditLog ?? process.env["AUDIT_LOG_PATH"];
|
|
111
126
|
const auditConfig = auditLogPath ? {
|
|
@@ -143,7 +158,10 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
143
158
|
oauthIssuer: options.oauthIssuer ?? process.env["OAUTH_ISSUER"],
|
|
144
159
|
oauthAudience: options.oauthAudience ?? process.env["OAUTH_AUDIENCE"],
|
|
145
160
|
oauthJwksUri: options.oauthJwksUri ?? process.env["OAUTH_JWKS_URI"],
|
|
146
|
-
oauthClockTolerance: parseInt(
|
|
161
|
+
oauthClockTolerance: parseInt(
|
|
162
|
+
process.env["OAUTH_CLOCK_TOLERANCE"] ?? options.oauthClockTolerance,
|
|
163
|
+
10
|
|
164
|
+
),
|
|
147
165
|
// Project Registry
|
|
148
166
|
projectRegistry: (() => {
|
|
149
167
|
const raw = process.env["PROJECT_REGISTRY"];
|
|
@@ -164,6 +182,10 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
164
182
|
process.env["BRIEFING_ENTRY_COUNT"] ?? options.briefingEntries,
|
|
165
183
|
10
|
|
166
184
|
),
|
|
185
|
+
summaryCount: parseInt(
|
|
186
|
+
process.env["BRIEFING_SUMMARY_COUNT"] ?? options.briefingSummaries,
|
|
187
|
+
10
|
|
188
|
+
),
|
|
167
189
|
includeTeam: options.briefingIncludeTeam ?? process.env["BRIEFING_INCLUDE_TEAM"] === "true",
|
|
168
190
|
issueCount: parseInt(
|
|
169
191
|
process.env["BRIEFING_ISSUE_COUNT"] ?? options.briefingIssues,
|
|
@@ -174,6 +196,10 @@ program.name("memory-journal-mcp").description("Project context management for A
|
|
|
174
196
|
10
|
|
175
197
|
),
|
|
176
198
|
prStatusBreakdown: options.briefingPrStatus ?? process.env["BRIEFING_PR_STATUS"] === "true",
|
|
199
|
+
milestoneCount: parseInt(
|
|
200
|
+
process.env["BRIEFING_MILESTONE_COUNT"] ?? options.briefingMilestones,
|
|
201
|
+
10
|
|
202
|
+
),
|
|
177
203
|
rulesFilePath: options.rulesFile ?? process.env["RULES_FILE_PATH"] ?? void 0,
|
|
178
204
|
skillsDirPath: options.skillsDir ?? process.env["SKILLS_DIR_PATH"] ?? void 0,
|
|
179
205
|
workflowCount: parseInt(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GitHubIntegration } from './chunk-WXDEVIFL.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -510,7 +510,7 @@ type SandboxMode = 'vm' | 'worker';
|
|
|
510
510
|
/**
|
|
511
511
|
* Tool group definitions mapping group names to tool names
|
|
512
512
|
*
|
|
513
|
-
* All
|
|
513
|
+
* All 67 tools are categorized here for filtering support.
|
|
514
514
|
*/
|
|
515
515
|
declare const TOOL_GROUPS: Record<ToolGroup, string[]>;
|
|
516
516
|
/**
|
|
@@ -575,6 +575,8 @@ declare function getFilterSummary(filterConfig: ToolFilterConfig): string;
|
|
|
575
575
|
interface BriefingConfig {
|
|
576
576
|
/** Number of recent journal entries to include (default: 3) */
|
|
577
577
|
entryCount: number;
|
|
578
|
+
/** Number of recent session summaries to display (default: 1) */
|
|
579
|
+
summaryCount?: number;
|
|
578
580
|
/** Include team DB entries in briefing preview (default: false) */
|
|
579
581
|
includeTeam: boolean;
|
|
580
582
|
/** Number of open issues to list with titles; 0 = count only (default: 0) */
|
|
@@ -583,6 +585,8 @@ interface BriefingConfig {
|
|
|
583
585
|
prCount: number;
|
|
584
586
|
/** Show PR status breakdown (open/merged/closed) instead of simple count (default: false) */
|
|
585
587
|
prStatusBreakdown: boolean;
|
|
588
|
+
/** Number of milestones to list in briefing; 0 = hide (default: 3) */
|
|
589
|
+
milestoneCount?: number;
|
|
586
590
|
/** Path to the user's rules file (e.g., .gemini/GEMINI.md) for awareness in briefing */
|
|
587
591
|
rulesFilePath?: string;
|
|
588
592
|
/** Path to the user's skills directory for awareness in briefing */
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { VERSION, createServer } from './chunk-
|
|
2
|
-
export { META_GROUPS, TOOL_GROUPS, calculateTokenSavings, filterTools, getAllToolNames, getFilterSummary, getToolFilterFromEnv, getToolGroup, isToolEnabled, parseToolFilter } from './chunk-
|
|
1
|
+
export { VERSION, createServer } from './chunk-CHWIPVQN.js';
|
|
2
|
+
export { META_GROUPS, TOOL_GROUPS, calculateTokenSavings, filterTools, getAllToolNames, getFilterSummary, getToolFilterFromEnv, getToolGroup, isToolEnabled, parseToolFilter } from './chunk-ZJJD2F5T.js';
|
|
3
3
|
import './chunk-OKOVZ5QE.js';
|
|
4
|
-
export { logger } from './chunk-
|
|
4
|
+
export { logger } from './chunk-WXDEVIFL.js';
|
|
5
5
|
|
|
6
6
|
// src/types/index.ts
|
|
7
7
|
var DEFAULT_CONFIG = {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { callTool, getGlobalAuditLogger, getTools, initializeAuditLogger } from './chunk-
|
|
1
|
+
export { callTool, getGlobalAuditLogger, getTools, initializeAuditLogger } from './chunk-ZJJD2F5T.js';
|
|
2
2
|
import './chunk-OKOVZ5QE.js';
|
|
3
|
-
import './chunk-
|
|
3
|
+
import './chunk-WXDEVIFL.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memory-journal-mcp",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.3.0",
|
|
4
4
|
"description": "Project context management for AI-assisted development - Persistent knowledge graphs and intelligent context recall across fragmented AI threads",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "tsup",
|
|
19
19
|
"dev": "tsc --watch",
|
|
20
|
-
"lint": "eslint src/",
|
|
21
|
-
"lint:fix": "eslint src/ --fix",
|
|
20
|
+
"lint": "eslint src/ tests/",
|
|
21
|
+
"lint:fix": "eslint src/ tests/ --fix",
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
23
|
"check": "npm run lint && npm run typecheck",
|
|
24
24
|
"test": "vitest run",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@playwright/test": "^1.59.1",
|
|
77
77
|
"@types/better-sqlite3": "^7.6.13",
|
|
78
78
|
"@types/express": "^5.0.6",
|
|
79
|
-
"@types/node": "^25.
|
|
79
|
+
"@types/node": "^25.6.0",
|
|
80
80
|
"@vitest/coverage-v8": "^4.1.3",
|
|
81
81
|
"eslint": "^10.2.0",
|
|
82
82
|
"globals": "^17.4.0",
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# neverinfamous-agent-skills
|
|
2
|
+
|
|
3
|
+
Reusable instruction sets that establish permanent AI behavior paradigms and extend agent capabilities for specialized tasks.
|
|
4
|
+
|
|
5
|
+
## Installation & Distribution
|
|
6
|
+
|
|
7
|
+
This directory is published as a standalone internal NPM package. Developers can pull the latest skills into their local workspaces by running:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx neverinfamous-agent-skills@latest
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This command will automatically download and synchronize the latest `SKILL.md` files into `./.agents/skills/`.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
skills/
|
|
19
|
+
└── <skill-name>/
|
|
20
|
+
├── SKILL.md # Main instruction file (required)
|
|
21
|
+
├── scripts/ # Helper scripts and utilities
|
|
22
|
+
├── examples/ # Reference implementations
|
|
23
|
+
└── resources/ # Templates, assets, reference docs
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### SKILL.md Format
|
|
27
|
+
|
|
28
|
+
Every skill must have a `SKILL.md` with YAML frontmatter:
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
---
|
|
32
|
+
name: skill-name
|
|
33
|
+
description: When and why to load this skill.
|
|
34
|
+
---
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The markdown body contains the full instructions the agent follows once the skill is activated.
|
|
38
|
+
|
|
39
|
+
## Inventory
|
|
40
|
+
|
|
41
|
+
| Skill | Description |
|
|
42
|
+
| ---------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
43
|
+
| `autonomous-dev` | Harness for autonomous software development — alignment gates, adversarial agents, Git workflows, and CI/CD pipelines |
|
|
44
|
+
| `bun` | Master the Bun all-in-one toolkit — runtime, package manager, test runner, and bundler |
|
|
45
|
+
| `github-commander` | GitHub pipeline workflows for orchestrating issues, regressions, and deployments |
|
|
46
|
+
| `gitlab` | Specialized assistant skill for managing repositories, code search, and CI/CD in GitLab |
|
|
47
|
+
| `golang` | Master Go development with production-grade best practices from Google and Uber style guides |
|
|
48
|
+
| `typescript` | Enterprise-grade TypeScript development with type-safe patterns, Zod validation, and modern tooling |
|
|
49
|
+
| `mysql` | Enterprise MySQL production rules — query safety, connection pooling, strict schema configurations |
|
|
50
|
+
| `playwright-standard` | Opinionated guidance for Playwright E2E/API tests, Page Object Models, and CI/CD resilience |
|
|
51
|
+
| `postgres` | Advanced PostgreSQL patterns — indexing layouts, JSONB querying, transactional guardrails, and RLS |
|
|
52
|
+
| `react-best-practices` | Vercel engineering guidelines for React/Next.js performance, hooks, and bundle optimization |
|
|
53
|
+
| `rust` | Master Rust development using a layer-based "meta-cognition" framework for borrowing, lifetimes, and architecture |
|
|
54
|
+
| `shadcn-ui` | Deep knowledge of shadcn/ui components, patterns, forms, and best practices |
|
|
55
|
+
| `skill-builder` | Guide for creating, evaluating, and refining agent skills — progressive disclosure, triggers, and testing |
|
|
56
|
+
| `sqlite` | Production configurations for concurrency (WAL), typing (STRICT), and data integrity |
|
|
57
|
+
| `vitest-standard` | Comprehensive unit testing expertise covering Vitest, TDD, mocking strategies, and test architecture |
|
|
58
|
+
|
|
59
|
+
## GitHub Commander Workflows
|
|
60
|
+
|
|
61
|
+
This package natively bundles the `github-commander` skill, which equips your AI agent with 8 autonomous DevOps workflows for repository stewardship:
|
|
62
|
+
|
|
63
|
+
- **`issue-triage`**: End-to-end bug replication, PR submission, and Kanban lifecycle linking.
|
|
64
|
+
- **`milestone-sprint`**: Sequential traversal of all open issues mapped to a specific release target.
|
|
65
|
+
- **`pr-review`**: Exhaustive local execution, typechecking, and heuristic code reviews against base branches.
|
|
66
|
+
- **`security-audit`**: Deep Trivy/CodeQL supply chain matrix evaluation.
|
|
67
|
+
- **`code-quality-audit`**: Enforcement of project guidelines, strict-typing boundaries, and import normalization.
|
|
68
|
+
- **`perf-audit`**: Bundle-size constraints, runtime hot-path execution, and CI/CD cache-hit evaluations.
|
|
69
|
+
- **`roadmap-kickoff`**: Parses implementation specifications to sequentially scaffold Epic hierarchies across issues and milestones.
|
|
70
|
+
- **`update-deps`**: Dependency constraint tracking, security patching, and major bump safety tests.
|
|
71
|
+
|
|
72
|
+
## Adding a Skill
|
|
73
|
+
|
|
74
|
+
1. Create a new directory: `skills/<skill-name>/`
|
|
75
|
+
2. Add `SKILL.md` with the frontmatter and instructions
|
|
76
|
+
3. Optionally add `scripts/`, `examples/`, or `resources/` sub-directories
|
|
77
|
+
4. The skill auto-registers — agents discover it via the directory listing
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autonomous-dev
|
|
3
|
+
description: Harness for autonomous software development. Enforces lifecycle through alignment gates (PROJECT.md), adversarial generator/evaluator agents, CI/CD pipeline automation, and strict Git workflows (Conventional Commits, Branching).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Autonomous Development Workflow
|
|
7
|
+
|
|
8
|
+
This skill provides a deterministic software engineering harness, designed to wrap AI code generation with strict alignment gates, adversarial evaluations, CI/CD pipeline principles, and collaborative Git practices. Load this skill when designing or orchestrating multi-step architectural features, automating deployment workflows, or writing code inside a structured environment.
|
|
9
|
+
|
|
10
|
+
## 1. Project Alignment Gate (PROJECT.md)
|
|
11
|
+
|
|
12
|
+
Before beginning implementation, you MUST cross-reference the proposed feature against `PROJECT.md` at the repository root.
|
|
13
|
+
|
|
14
|
+
- **In-Scope**: Proceed with confidence.
|
|
15
|
+
- **Out-of-Scope**: Hard block. Halt work immediately and inform the user.
|
|
16
|
+
- **Constraints**: Abide strictly by the constraints (language, architecture, dependencies) defined in the project file.
|
|
17
|
+
|
|
18
|
+
## 2. Generator / Evaluator Pipeline
|
|
19
|
+
|
|
20
|
+
Features cannot simply be written and committed. They must navigate a rigid pipeline based on the adversarial evaluation pattern:
|
|
21
|
+
|
|
22
|
+
1. **Research**: Analyze local scope and external dependencies via parallel search strategies.
|
|
23
|
+
2. **Planning**: Formulate architecture and acceptance criteria (generator).
|
|
24
|
+
3. **Acceptance Tests FIRST**: Tests must be written before main implementation (TDD).
|
|
25
|
+
4. **Implementation**: Produce code.
|
|
26
|
+
- _HARD GATE_: 0 test failures. You cannot proceed if tests fail. No stubs/placeholders allowed.
|
|
27
|
+
5. **Adversarial Review**: Self-evaluate the code as a skeptical reviewer (evaluator). Actively search for edge cases, security vulnerabilities, efficiency loss, and anti-patterns.
|
|
28
|
+
6. **Documentation**: Ensure docs stay tightly in sync with the codebase after the feature clears CI.
|
|
29
|
+
|
|
30
|
+
## 3. Git Workflow & Versioning
|
|
31
|
+
|
|
32
|
+
Enforce strict version control standards on all changes:
|
|
33
|
+
|
|
34
|
+
- **Branching**: Use feature branches (`feature/my-feature`), bugfix branches (`fix/bug-name`), or standard trunk-based branching flows depending on the repository context.
|
|
35
|
+
- **Atomic Commits**: Group distinct changes into smaller, logical, single-purpose commits. Do not lump refactoring with new logic.
|
|
36
|
+
- **Conventional Commits**: You MUST format all commits according to the Conventional Commits specification:
|
|
37
|
+
- `feat: <description>` for new features (MINOR bump)
|
|
38
|
+
- `fix: <description>` for bug fixes (PATCH bump)
|
|
39
|
+
- `docs:`, `style:`, `refactor:`, `perf:`, `test:`, `build:`, `ci:`, `chore:` for specific maintenance scopes.
|
|
40
|
+
- Suffix `!` for breaking changes (e.g., `feat!: remove API v1`) (MAJOR bump).
|
|
41
|
+
|
|
42
|
+
## 4. Continuous Integration/Deployment (CI/CD)
|
|
43
|
+
|
|
44
|
+
When designing automation and pipelines:
|
|
45
|
+
|
|
46
|
+
- **GitHub Actions First**: Prioritize GitHub Actions for CI/CD pipeline orchestration, favoring Reusable Workflows and matrix builds.
|
|
47
|
+
- **Validation Blocks**: Every PR or merge MUST require passing lint, test, and type-check gates.
|
|
48
|
+
- **Automation Constraints**: Automate Semantic Versioning (using conventional commits) to power automated release notes and changelog generation.
|
|
49
|
+
- **Security Scans**: Mandate security scanning (e.g. CodeQL, Trivy) on standard PR flows.
|
|
50
|
+
|
|
51
|
+
## 5. Context Management & Drift Prevention
|
|
52
|
+
|
|
53
|
+
As the context window fills up, context anxiety can degrade performance.
|
|
54
|
+
|
|
55
|
+
- Recognize when the session has spanned too many features or files (e.g., beyond 4-5 features).
|
|
56
|
+
- Use session summaries or persistent memories to bookmark state, clear the context, and resume with a fresh perspective.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs'
|
|
4
|
+
import path from 'node:path'
|
|
5
|
+
import { fileURLToPath } from 'node:url'
|
|
6
|
+
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url)
|
|
8
|
+
const __dirname = path.dirname(__filename)
|
|
9
|
+
|
|
10
|
+
// The source skills directory is the parent of 'bin'
|
|
11
|
+
const sourceDir = path.resolve(__dirname, '..')
|
|
12
|
+
|
|
13
|
+
// Destination logic: allow argument override, default to %CWD%/.agents/skills
|
|
14
|
+
const destArg = process.argv[2]
|
|
15
|
+
const targetDir = destArg
|
|
16
|
+
? path.resolve(process.cwd(), destArg)
|
|
17
|
+
: path.resolve(process.cwd(), '.agents/skills')
|
|
18
|
+
|
|
19
|
+
if (!fs.existsSync(targetDir)) {
|
|
20
|
+
fs.mkdirSync(targetDir, { recursive: true })
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
console.log(`\x1b[36mSynchronizing neverinfamous-agent-skills to -> ${targetDir}\x1b[0m`)
|
|
24
|
+
|
|
25
|
+
const items = fs.readdirSync(sourceDir)
|
|
26
|
+
let count = 0
|
|
27
|
+
|
|
28
|
+
for (const item of items) {
|
|
29
|
+
// Ignore hidden files and meta-package files
|
|
30
|
+
if (
|
|
31
|
+
item.startsWith('.') ||
|
|
32
|
+
['bin', 'node_modules', 'package.json', 'package-lock.json', 'README.md'].includes(item)
|
|
33
|
+
) {
|
|
34
|
+
continue
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const sourcePath = path.join(sourceDir, item)
|
|
38
|
+
const targetPath = path.join(targetDir, item)
|
|
39
|
+
|
|
40
|
+
if (fs.statSync(sourcePath).isDirectory()) {
|
|
41
|
+
fs.cpSync(sourcePath, targetPath, { recursive: true })
|
|
42
|
+
console.log(` \x1b[32m\u2714\x1b[0m ${item}`)
|
|
43
|
+
count++
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
console.log(`\n\x1b[32mSuccessfully synchronized ${count} agent skill modules.\x1b[0m`)
|
|
48
|
+
console.log(`\nNext Steps:`)
|
|
49
|
+
console.log(` 1. Set your SKILLS_DIR_PATH environment variable to: ${targetDir}`)
|
|
50
|
+
console.log(` 2. Restart your MCP server to index the new skills.`)
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Bun Development
|
|
3
|
+
description: Master the Bun all-in-one toolkit — runtime, package manager, test runner, and bundler.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Bun is a fast, all-in-one JavaScript runtime, bundler, test runner, and package manager designed as a drop-in replacement for Node.js. When working on projects that use Bun, AI agents should leverage its integrated tooling and native APIs to maximize performance and simplify development.
|
|
7
|
+
|
|
8
|
+
This skill synthesizes the best practices for Bun development, giving you the context needed to effectively write, test, and build applications.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 🚀 1. Package Management (`bun install`)
|
|
13
|
+
|
|
14
|
+
Bun features a deeply optimized package manager. Always use `bun` commands instead of `npm`, `yarn`, or `pnpm` if a project has `bun.lockb` or `bun.lock`.
|
|
15
|
+
|
|
16
|
+
- **Install all dependencies:** `bun install`
|
|
17
|
+
- **Add a package:** `bun add <package>` (Use `-d` or `--dev` for devDependencies)
|
|
18
|
+
- **Remove a package:** `bun remove <package>`
|
|
19
|
+
- **Run binaries:** `bunx <command>` (The blazing fast equivalent of `npx`)
|
|
20
|
+
|
|
21
|
+
**Agent Directive:** Never run `npm install` gracefully if `bun.lockb` is present. Always opt for `bun add`.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## ⚡ 2. Script Execution (`bun run`)
|
|
26
|
+
|
|
27
|
+
Run scripts from `package.json` lightning fast:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
bun run dev
|
|
31
|
+
bun run build
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Run TypeScript and JavaScript files natively—no `ts-node`, `tsc`, or build step required:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
bun run scripts/setup.ts
|
|
38
|
+
bun index.tsx
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 🌐 3. Core Runtime APIs
|
|
44
|
+
|
|
45
|
+
Bun provides deeply optimized, native APIs under the `Bun` global and `bun:*` modules.
|
|
46
|
+
|
|
47
|
+
### HTTP Server (`Bun.serve`)
|
|
48
|
+
|
|
49
|
+
Use `Bun.serve()` as the default over Node's `http` or `express` for simple tasks.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const server = Bun.serve({
|
|
53
|
+
port: 3000,
|
|
54
|
+
fetch(req) {
|
|
55
|
+
const url = new URL(req.url)
|
|
56
|
+
if (url.pathname === '/') return new Response('Hello World!')
|
|
57
|
+
if (url.pathname === '/json') return Response.json({ success: true })
|
|
58
|
+
return new Response('Not Found', { status: 404 })
|
|
59
|
+
},
|
|
60
|
+
})
|
|
61
|
+
console.log(`Listening on localhost:${server.port}`)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### File I/O (`Bun.file()`, `Bun.write()`)
|
|
65
|
+
|
|
66
|
+
Skip `fs` module when possible. Use Bun's native lazy-loaded File I/O.
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
const file = Bun.file('package.json')
|
|
70
|
+
const text = await file.text()
|
|
71
|
+
const json = await file.json()
|
|
72
|
+
|
|
73
|
+
// Writing
|
|
74
|
+
await Bun.write('output.txt', 'Hello world!')
|
|
75
|
+
await Bun.write('data.json', JSON.stringify({ a: 1 }))
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Shell Scripts (`bun:`)
|
|
79
|
+
|
|
80
|
+
Replace `child_process` and `zx` with the native Bun shell (`$`).
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { $ } from 'bun'
|
|
84
|
+
|
|
85
|
+
const response = await $`ls -la`.text()
|
|
86
|
+
await $`echo "Built successfully" > status.txt`
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Password Hashing (`Bun.password`)
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
const hash = await Bun.password.hash('mypassword') // bcrypt by default
|
|
93
|
+
const isMatch = await Bun.password.verify('mypassword', hash)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 🗄️ 4. Native SQLite (`bun:sqlite`)
|
|
99
|
+
|
|
100
|
+
Bun has a built-in, hyper-optimized SQLite driver. Use it instead of `better-sqlite3` or `sqlite3`.
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import { Database } from 'bun:sqlite'
|
|
104
|
+
|
|
105
|
+
const db = new Database('mydb.sqlite')
|
|
106
|
+
db.run('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)')
|
|
107
|
+
|
|
108
|
+
const insert = db.prepare('INSERT INTO users (name) VALUES ($name)')
|
|
109
|
+
insert.run({ $name: 'Alice' })
|
|
110
|
+
|
|
111
|
+
const query = db.query('SELECT * FROM users;')
|
|
112
|
+
console.log(query.all())
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 🧪 5. Testing (`bun test`)
|
|
118
|
+
|
|
119
|
+
Bun features a native, Jest-compatible test runner. Run tests with `bun test`.
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
import { describe, it, expect, mock, spyOn } from 'bun:test'
|
|
123
|
+
|
|
124
|
+
describe('Math API', () => {
|
|
125
|
+
it('adds numbers correctly', () => {
|
|
126
|
+
expect(1 + 1).toBe(2)
|
|
127
|
+
})
|
|
128
|
+
})
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
- **Coverage:** `bun test --coverage`
|
|
132
|
+
- **Watch mode:** `bun test --watch`
|
|
133
|
+
|
|
134
|
+
**Agent Directive:** If instructed to add unit tests to a Bun project, use `bun:test` imports and `bun test` instead of installing Jest or Vitest unless explicitly dictated by the user.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 📦 6. Bundling & Executables
|
|
139
|
+
|
|
140
|
+
Bun can bundle files for browser or Node, and even compile scripts into standalone binaries!
|
|
141
|
+
|
|
142
|
+
**Bundling:**
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
await Bun.build({
|
|
146
|
+
entrypoints: ['./index.ts'],
|
|
147
|
+
outdir: './dist',
|
|
148
|
+
minify: true,
|
|
149
|
+
})
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Executables:** Provide instructions to compile binaries using:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
bun build ./cli.ts --compile --outfile mycli
|
|
156
|
+
```
|
|
@@ -40,11 +40,11 @@ Load this skill when any of these apply:
|
|
|
40
40
|
| **Issue Triage** | `workflows/issue-triage.md` | Fix a single GitHub issue end-to-end |
|
|
41
41
|
| **PR Review** | `workflows/pr-review.md` | Review a PR with validation pipeline |
|
|
42
42
|
| **Milestone Sprint** | `workflows/milestone-sprint.md` | Work through milestone issues sequentially |
|
|
43
|
+
| **Roadmap Kickoff** | `workflows/roadmap-kickoff.md` | Translate planning epics into Kanban issues |
|
|
43
44
|
| **Update Dependencies** | `workflows/update-deps.md` | Dependency update with audit trail |
|
|
44
45
|
| **Security Audit** | `workflows/security-audit.md` | Auto-detected security scanning |
|
|
45
46
|
| **Code Quality Audit** | `workflows/code-quality-audit.md` | Static code quality analysis |
|
|
46
47
|
| **Performance Audit** | `workflows/perf-audit.md` | Build, bundle, runtime, test speed analysis |
|
|
47
|
-
| **Full Audit** | `workflows/full-audit.md` | Unified quality + perf + security audit |
|
|
48
48
|
|
|
49
49
|
## Prerequisites
|
|
50
50
|
|
|
@@ -13,8 +13,9 @@ and a concrete fix suggestion. Group findings by category:
|
|
|
13
13
|
feature flags
|
|
14
14
|
2. **Duplication** — repeated logic that should be extracted into shared helpers
|
|
15
15
|
3. **Import hygiene** — unused imports, missing imports, circular dependencies
|
|
16
|
-
4. **Type safety** — `any` usage
|
|
17
|
-
types on exported functions
|
|
16
|
+
4. **Type safety** — `any` usage (use `unknown` instead), loose type assertions
|
|
17
|
+
(`as` — prefer `satisfies`), missing return types on exported functions,
|
|
18
|
+
and use of `enum`s (prefer literal union types)
|
|
18
19
|
5. **Error handling** — typed error classes with descriptive messages including
|
|
19
20
|
context. Propagate with stack traces; never silently swallow exceptions
|
|
20
21
|
6. **Logging** — centralized logger with structured payloads. Module-prefixed
|
|
@@ -28,8 +29,9 @@ and a concrete fix suggestion. Group findings by category:
|
|
|
28
29
|
named constants
|
|
29
30
|
10. **Stale markers** — TODO, FIXME, HACK, XXX comments; outdated JSDoc;
|
|
30
31
|
comments that contradict the code
|
|
31
|
-
11. **Security** —
|
|
32
|
-
|
|
32
|
+
11. **Boundary Validation & Security** — ALWAYS use Zod (or equivalent) to
|
|
33
|
+
validate external boundaries. Flag blind-casting of payloads. Flag
|
|
34
|
+
unsanitized SQL interpolation, missing validation, overly permissive schemas
|
|
33
35
|
12. **Performance** — unnecessary allocations in hot paths, missing early
|
|
34
36
|
returns, redundant queries
|
|
35
37
|
13. **Dependency hygiene** — unused dependencies, unlisted peer dependencies
|
|
@@ -70,7 +72,7 @@ After human approval:
|
|
|
70
72
|
2. Run validation gates after all fixes:
|
|
71
73
|
- Gate 1: Lint + Typecheck
|
|
72
74
|
- Gate 2: Build
|
|
73
|
-
- Gate 3: Tests
|
|
75
|
+
- Gate 3: Tests _(Agent Note: Ensure OutputCharacterCount >= 10000 on test command execution to fully capture the summary line.)_
|
|
74
76
|
3. Update changelog with audit fixes
|
|
75
77
|
4. Commit with descriptive message:
|
|
76
78
|
```bash
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Fix a single assigned GitHub issue end-to-end — from context gathering through validated PR submission
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Issue Triage
|
|
2
6
|
|
|
3
7
|
Fix a single assigned GitHub issue end-to-end — from context gathering through
|
|
@@ -79,7 +83,7 @@ On failure → attempt fix → **HITL checkpoint** after 2 attempts.
|
|
|
79
83
|
|
|
80
84
|
### Gate 3: Unit/Integration Tests
|
|
81
85
|
|
|
82
|
-
Run `PROJECT_TEST_CMD` (default: `npm run test`).
|
|
86
|
+
Run `PROJECT_TEST_CMD` (default: `npm run test`). _(Agent Note: Ensure OutputCharacterCount >= 10000 on test execution)_
|
|
83
87
|
|
|
84
88
|
On failure:
|
|
85
89
|
|
|
@@ -90,7 +94,7 @@ On failure:
|
|
|
90
94
|
|
|
91
95
|
### Gate 4: E2E Tests
|
|
92
96
|
|
|
93
|
-
Run `PROJECT_E2E_CMD` (default: empty = skip).
|
|
97
|
+
Run `PROJECT_E2E_CMD` (default: empty = skip). _(Agent Note: Ensure OutputCharacterCount >= 10000)_
|
|
94
98
|
Skip if not configured. Same failure handling as Gate 3.
|
|
95
99
|
|
|
96
100
|
### Gate 5: Security Scans
|
|
@@ -217,16 +221,21 @@ Wait for human approval before proceeding to Phase 5.
|
|
|
217
221
|
gh pr create --base main --title "fix: <description>" --body "Closes #<N>\n\n<summary of changes>"
|
|
218
222
|
```
|
|
219
223
|
|
|
220
|
-
6. Journal the PR:
|
|
224
|
+
6. Journal the PR and update the Kanban Board:
|
|
221
225
|
```
|
|
222
226
|
create_entry({
|
|
223
227
|
content: "Submitted PR #<pr_number> for issue #<N>: <description>. Gates: all passed.",
|
|
224
228
|
entry_type: "pr_submitted",
|
|
225
|
-
tags: ["commander", "pr"],
|
|
229
|
+
tags: ["commander", "pr", "kanban_sync"],
|
|
226
230
|
issue_number: <N>,
|
|
227
231
|
pr_number: <pr_number>
|
|
228
232
|
})
|
|
229
233
|
```
|
|
234
|
+
_Kanban Sync:_ Using the Project Node IDs anchored in the memory journal during the roadmap kickoff, transition the issue card from "In Progress" to "In Review":
|
|
235
|
+
```bash
|
|
236
|
+
// turbo
|
|
237
|
+
gh project item-edit --id {ITEM_NODE_ID} --project-id {PROJECT_NODE_ID} --field-id {STATUS_FIELD_ID} --single-select-option-id {IN_REVIEW_OPTION_ID}
|
|
238
|
+
```
|
|
230
239
|
|
|
231
240
|
## Phase 6 — Session Summary
|
|
232
241
|
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Work through open issues in a GitHub milestone sequentially, applying the issue-triage workflow to each
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Milestone Sprint
|
|
2
6
|
|
|
3
7
|
Work through open issues in a GitHub milestone sequentially, applying the
|
|
@@ -10,7 +14,11 @@ issue-triage workflow to each.
|
|
|
10
14
|
```
|
|
11
15
|
get_github_milestone({ milestone_number: <N> })
|
|
12
16
|
```
|
|
13
|
-
3.
|
|
17
|
+
3. Read priority ordering directly from the centralized Project Control Board:
|
|
18
|
+
```
|
|
19
|
+
read_resource("memory://kanban/{project_number}")
|
|
20
|
+
```
|
|
21
|
+
Cross-reference this prioritized sequence with the open milestone issues:
|
|
14
22
|
```
|
|
15
23
|
get_github_issues({ milestone: <N>, state: "open" })
|
|
16
24
|
```
|