mcp-ai-agent-guidelines 0.1.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/LICENSE +21 -0
- package/README.md +336 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +307 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +21 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +504 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +14 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +92 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/structured.d.ts +47 -0
- package/dist/resources/structured.d.ts.map +1 -0
- package/dist/resources/structured.js +857 -0
- package/dist/resources/structured.js.map +1 -0
- package/dist/tools/code-hygiene-analyzer.d.ts +7 -0
- package/dist/tools/code-hygiene-analyzer.d.ts.map +1 -0
- package/dist/tools/code-hygiene-analyzer.js +176 -0
- package/dist/tools/code-hygiene-analyzer.js.map +1 -0
- package/dist/tools/config/guidelines-config.d.ts +16 -0
- package/dist/tools/config/guidelines-config.d.ts.map +1 -0
- package/dist/tools/config/guidelines-config.js +236 -0
- package/dist/tools/config/guidelines-config.js.map +1 -0
- package/dist/tools/config/model-config.d.ts +33 -0
- package/dist/tools/config/model-config.d.ts.map +1 -0
- package/dist/tools/config/model-config.js +206 -0
- package/dist/tools/config/model-config.js.map +1 -0
- package/dist/tools/guidelines-validator.d.ts +7 -0
- package/dist/tools/guidelines-validator.d.ts.map +1 -0
- package/dist/tools/guidelines-validator.js +178 -0
- package/dist/tools/guidelines-validator.js.map +1 -0
- package/dist/tools/hierarchical-prompt-builder.d.ts +7 -0
- package/dist/tools/hierarchical-prompt-builder.d.ts.map +1 -0
- package/dist/tools/hierarchical-prompt-builder.js +147 -0
- package/dist/tools/hierarchical-prompt-builder.js.map +1 -0
- package/dist/tools/memory-context-optimizer.d.ts +7 -0
- package/dist/tools/memory-context-optimizer.d.ts.map +1 -0
- package/dist/tools/memory-context-optimizer.js +256 -0
- package/dist/tools/memory-context-optimizer.js.map +1 -0
- package/dist/tools/mermaid-diagram-generator.d.ts +7 -0
- package/dist/tools/mermaid-diagram-generator.d.ts.map +1 -0
- package/dist/tools/mermaid-diagram-generator.js +312 -0
- package/dist/tools/mermaid-diagram-generator.js.map +1 -0
- package/dist/tools/model-compatibility-checker.d.ts +7 -0
- package/dist/tools/model-compatibility-checker.d.ts.map +1 -0
- package/dist/tools/model-compatibility-checker.js +204 -0
- package/dist/tools/model-compatibility-checker.js.map +1 -0
- package/dist/tools/sprint-timeline-calculator.d.ts +7 -0
- package/dist/tools/sprint-timeline-calculator.d.ts.map +1 -0
- package/dist/tools/sprint-timeline-calculator.js +240 -0
- package/dist/tools/sprint-timeline-calculator.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { BUDGET_ADJUSTMENTS, BUDGET_BONUS, BUDGET_PENALTY, CAPABILITY_WEIGHTS, MODELS, REQUIREMENT_KEYWORDS, } from "./config/model-config.js";
|
|
3
|
+
const ModelCompatibilitySchema = z.object({
|
|
4
|
+
taskDescription: z.string(),
|
|
5
|
+
requirements: z.array(z.string()).optional(),
|
|
6
|
+
budget: z.enum(["low", "medium", "high"]).optional(),
|
|
7
|
+
// Optional additions
|
|
8
|
+
language: z.string().optional(), // for example snippets (e.g., 'typescript', 'python')
|
|
9
|
+
includeReferences: z.boolean().optional().default(true),
|
|
10
|
+
includeCodeExamples: z.boolean().optional().default(true),
|
|
11
|
+
linkFiles: z.boolean().optional().default(true),
|
|
12
|
+
includeMetadata: z.boolean().optional().default(true),
|
|
13
|
+
inputFile: z.string().optional(),
|
|
14
|
+
});
|
|
15
|
+
export async function modelCompatibilityChecker(args) {
|
|
16
|
+
const input = ModelCompatibilitySchema.parse(args);
|
|
17
|
+
const analysis = analyzeModelCompatibility(input);
|
|
18
|
+
const codeExamples = input.includeCodeExamples
|
|
19
|
+
? buildCodeExamples(input.language)
|
|
20
|
+
: undefined;
|
|
21
|
+
const fileLinks = input.linkFiles ? buildFileLinks() : undefined;
|
|
22
|
+
const metadata = input.includeMetadata
|
|
23
|
+
? [
|
|
24
|
+
"### Metadata",
|
|
25
|
+
`- Updated: ${new Date().toISOString().slice(0, 10)}`,
|
|
26
|
+
"- Source tool: mcp_ai-agent-guid_model-compatibility-checker",
|
|
27
|
+
input.inputFile ? `- Input file: ${input.inputFile}` : undefined,
|
|
28
|
+
"",
|
|
29
|
+
]
|
|
30
|
+
.filter(Boolean)
|
|
31
|
+
.join("\n")
|
|
32
|
+
: "";
|
|
33
|
+
return {
|
|
34
|
+
content: [
|
|
35
|
+
{
|
|
36
|
+
type: "text",
|
|
37
|
+
text: `## 🤖 AI Model Compatibility Analysis (Qualitative)
|
|
38
|
+
|
|
39
|
+
${metadata}
|
|
40
|
+
|
|
41
|
+
### Task Analysis
|
|
42
|
+
**Description**: ${input.taskDescription}
|
|
43
|
+
**Requirements**: ${input.requirements?.join(", ") || "None specified"}
|
|
44
|
+
**Budget**: ${input.budget || "Not specified"}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### Top Recommendations (Qualitative)
|
|
48
|
+
|
|
49
|
+
${analysis.recommendations
|
|
50
|
+
.slice(0, 3)
|
|
51
|
+
.map((model, index) => `#### ${index + 1}. ${model.name} (${model.provider})
|
|
52
|
+
**Fit Summary**: ${model.strengths[0] || "General purpose"}
|
|
53
|
+
**Context Handling**: ${model.contextWindow} (refer to provider docs)
|
|
54
|
+
**Notes**: ${model.limitations[0] || "No major caveats documented"}
|
|
55
|
+
|
|
56
|
+
**Highlights**:
|
|
57
|
+
${model.specialFeatures.map((f) => `- ${f}`).join("\n")}
|
|
58
|
+
`)
|
|
59
|
+
.join("\n")}
|
|
60
|
+
|
|
61
|
+
### Selection Snapshot
|
|
62
|
+
|
|
63
|
+
| Model | Provider | Best For |
|
|
64
|
+
|-------|----------|----------|
|
|
65
|
+
${analysis.recommendations
|
|
66
|
+
.map((model) => `| ${model.name} | ${model.provider} | ${model.strengths[0] || "General use"} |`)
|
|
67
|
+
.join("\n")}
|
|
68
|
+
|
|
69
|
+
### Selection Guidelines
|
|
70
|
+
|
|
71
|
+
**For Code Generation**: Choose models with strong reasoning capabilities and code-specific training
|
|
72
|
+
**For Analysis Tasks**: Prioritize models with large context windows and analytical strength
|
|
73
|
+
**For Creative Tasks**: Select models optimized for creative writing and diverse outputs
|
|
74
|
+
**For Production Use**: Consider latency, cost, and reliability alongside capability
|
|
75
|
+
|
|
76
|
+
### Usage Optimization Tips
|
|
77
|
+
1. **Start with smaller models** for prototyping and testing
|
|
78
|
+
2. **Use prompt caching** for repeated system messages
|
|
79
|
+
3. **Implement model switching** based on task complexity
|
|
80
|
+
4. **Monitor token usage** and optimize prompts for efficiency
|
|
81
|
+
5. **Consider fine-tuning** for specialized, high-volume use cases
|
|
82
|
+
|
|
83
|
+
### Evaluation Method
|
|
84
|
+
Heuristic fit against requirement keywords; qualitative only. Validate with quick benchmarks in your stack.
|
|
85
|
+
|
|
86
|
+
### Rolling Model Updates
|
|
87
|
+
- Config-driven list (context windows, tiers, capabilities) periodically refreshed
|
|
88
|
+
- Capability weights & budget adjustments may evolve
|
|
89
|
+
|
|
90
|
+
${codeExamples ? `### Code Examples\n${codeExamples}\n` : ""}
|
|
91
|
+
${fileLinks ? `### Configuration & Files\n${fileLinks}\n` : ""}
|
|
92
|
+
### References
|
|
93
|
+
- GitHub Copilot model comparison (task-based): https://docs.github.com/en/copilot/reference/ai-models/model-comparison#recommended-models-by-task
|
|
94
|
+
- OpenAI models overview: https://platform.openai.com/docs/models
|
|
95
|
+
- Anthropic Claude models: https://docs.anthropic.com/en/docs/about-claude/models
|
|
96
|
+
- Google Gemini models: https://ai.google.dev/gemini-api/docs/models
|
|
97
|
+
|
|
98
|
+
### Disclaimer
|
|
99
|
+
- This tool provides qualitative recommendations and links to official docs.
|
|
100
|
+
- Capabilities evolve; verify with provider docs and test in your environment before adoption.
|
|
101
|
+
`,
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function analyzeModelCompatibility(input) {
|
|
107
|
+
const text = [input.taskDescription, ...(input.requirements || [])]
|
|
108
|
+
.join(" ")
|
|
109
|
+
.toLowerCase();
|
|
110
|
+
const matchedCaps = new Set();
|
|
111
|
+
for (const [cap, words] of Object.entries(REQUIREMENT_KEYWORDS)) {
|
|
112
|
+
if (words.some((w) => text.includes(w)))
|
|
113
|
+
matchedCaps.add(cap);
|
|
114
|
+
}
|
|
115
|
+
const budgetAdj = input.budget ? BUDGET_ADJUSTMENTS[input.budget] : undefined;
|
|
116
|
+
const scored = MODELS.map((m) => {
|
|
117
|
+
let score = m.baseScore;
|
|
118
|
+
const breakdown = [`Base: ${m.baseScore}`];
|
|
119
|
+
for (const cap of matchedCaps) {
|
|
120
|
+
if (m.capabilities.includes(cap)) {
|
|
121
|
+
const add = CAPABILITY_WEIGHTS[cap] || 0;
|
|
122
|
+
score += add;
|
|
123
|
+
breakdown.push(`+${add} ${cap}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (budgetAdj && input.budget) {
|
|
127
|
+
if (budgetAdj.bonus.includes(m.pricingTier)) {
|
|
128
|
+
score += BUDGET_BONUS;
|
|
129
|
+
breakdown.push(`+${BUDGET_BONUS} budget alignment (${input.budget})`);
|
|
130
|
+
}
|
|
131
|
+
if (budgetAdj.penalty.includes(m.pricingTier)) {
|
|
132
|
+
score -= BUDGET_PENALTY;
|
|
133
|
+
breakdown.push(`-${BUDGET_PENALTY} budget penalty (${m.pricingTier})`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
score = Math.max(0, Math.min(100, score));
|
|
137
|
+
return {
|
|
138
|
+
name: m.name,
|
|
139
|
+
provider: m.provider,
|
|
140
|
+
pricing: m.pricing,
|
|
141
|
+
contextWindow: `${Intl.NumberFormat().format(m.contextTokens)} tokens`,
|
|
142
|
+
strengths: m.strengths,
|
|
143
|
+
limitations: m.limitations,
|
|
144
|
+
specialFeatures: m.specialFeatures,
|
|
145
|
+
score,
|
|
146
|
+
breakdown,
|
|
147
|
+
};
|
|
148
|
+
});
|
|
149
|
+
return { recommendations: scored.sort((a, b) => b.score - a.score) };
|
|
150
|
+
}
|
|
151
|
+
// references moved inline in output for simplicity and always-on links
|
|
152
|
+
function buildCodeExamples(language) {
|
|
153
|
+
const lang = (language || "typescript").toLowerCase();
|
|
154
|
+
if (lang.includes("python")) {
|
|
155
|
+
return [
|
|
156
|
+
"#### Python (pseudo-usage)",
|
|
157
|
+
"```python",
|
|
158
|
+
"# Example: switch model by task complexity",
|
|
159
|
+
"def pick_model(task_complexity: str):",
|
|
160
|
+
" if task_complexity in ('simple', 'low-latency'):",
|
|
161
|
+
" return 'o4-mini' # budget/fast\n",
|
|
162
|
+
" if task_complexity in ('large-context', 'long-docs'):",
|
|
163
|
+
" return 'gemini-2.5-pro' # 2M context\n",
|
|
164
|
+
" return 'claude-4-sonnet' # balanced default\n",
|
|
165
|
+
"",
|
|
166
|
+
"model = pick_model('large-context')",
|
|
167
|
+
"# Call provider SDK accordingly (pseudo):",
|
|
168
|
+
"# openai.chat.completions.create(model=model, messages=...)",
|
|
169
|
+
"# anthropic.messages.create(model=model, messages=...)",
|
|
170
|
+
"# genai.GenerativeModel(model).generate_content(...)",
|
|
171
|
+
"```",
|
|
172
|
+
].join("\n");
|
|
173
|
+
}
|
|
174
|
+
// default TypeScript/JavaScript
|
|
175
|
+
return [
|
|
176
|
+
"#### TypeScript (pattern)",
|
|
177
|
+
"```ts",
|
|
178
|
+
"type Provider = 'openai' | 'anthropic' | 'google';",
|
|
179
|
+
"interface Choice { provider: Provider; model: string }",
|
|
180
|
+
"export function pickModel(opts: { complexity?: 'simple'|'balanced'|'advanced'; largeContext?: boolean; multimodal?: boolean; budget?: 'low'|'medium'|'high'; }): Choice {",
|
|
181
|
+
" if (opts.largeContext) return { provider: 'google', model: 'gemini-2.5-pro' };",
|
|
182
|
+
" if (opts.complexity === 'advanced') return { provider: 'anthropic', model: 'claude-4-opus' };",
|
|
183
|
+
" if (opts.complexity === 'simple' || opts.budget === 'low') return { provider: 'openai', model: 'o4-mini' };",
|
|
184
|
+
" return { provider: 'anthropic', model: 'claude-4-sonnet' };",
|
|
185
|
+
"}",
|
|
186
|
+
"",
|
|
187
|
+
"// Example usage (pseudo—replace with real SDK calls):",
|
|
188
|
+
"const choice = pickModel({ largeContext: true });",
|
|
189
|
+
"switch (choice.provider) {",
|
|
190
|
+
" case 'openai': /* openai.chat.completions.create({ model: choice.model, messages }) */ break;",
|
|
191
|
+
" case 'anthropic': /* anthropic.messages.create({ model: choice.model, messages }) */ break;",
|
|
192
|
+
" case 'google': /* new GenerativeModel({ model: choice.model }).generateContent(...) */ break;",
|
|
193
|
+
"}",
|
|
194
|
+
"```",
|
|
195
|
+
].join("\n");
|
|
196
|
+
}
|
|
197
|
+
function buildFileLinks() {
|
|
198
|
+
return [
|
|
199
|
+
"- Update model profiles in: src/tools/config/model-config.ts",
|
|
200
|
+
"- See selection guidance resource: guidelines://model-selection",
|
|
201
|
+
"- Server tool exposing this analysis: src/tools/model-compatibility-checker.ts",
|
|
202
|
+
].join("\n");
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=model-compatibility-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-compatibility-checker.js","sourceRoot":"","sources":["../../src/tools/model-compatibility-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint-timeline-calculator.d.ts","sourceRoot":"","sources":["../../src/tools/sprint-timeline-calculator.ts"],"names":[],"mappings":"AAoBA,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,OAAO;;;;;GA4H3D"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const SprintTimelineSchema = z.object({
|
|
3
|
+
tasks: z.array(z.object({
|
|
4
|
+
name: z.string(),
|
|
5
|
+
estimate: z.number(),
|
|
6
|
+
priority: z.string().optional(),
|
|
7
|
+
dependencies: z.array(z.string()).optional(),
|
|
8
|
+
})),
|
|
9
|
+
teamSize: z.number(),
|
|
10
|
+
sprintLength: z.number().optional(),
|
|
11
|
+
velocity: z.number().optional(),
|
|
12
|
+
includeMetadata: z.boolean().optional().default(true),
|
|
13
|
+
inputFile: z.string().optional(),
|
|
14
|
+
});
|
|
15
|
+
export async function sprintTimelineCalculator(args) {
|
|
16
|
+
const input = SprintTimelineSchema.parse(args);
|
|
17
|
+
const calculation = calculateSprintTimeline(input);
|
|
18
|
+
const sprintLen = input.sprintLength || 14;
|
|
19
|
+
return {
|
|
20
|
+
content: [
|
|
21
|
+
{
|
|
22
|
+
type: "text",
|
|
23
|
+
text: `## 🗓️ Sprint Timeline Calculation
|
|
24
|
+
|
|
25
|
+
${input.includeMetadata ? `### Metadata\n- **Updated:** ${new Date().toISOString().slice(0, 10)}\n- **Source tool:** mcp_ai-agent-guid_sprint-timeline-calculator${input.inputFile ? `\n- **Input file:** ${input.inputFile}` : ""}\n` : ""}
|
|
26
|
+
|
|
27
|
+
### Team Configuration
|
|
28
|
+
- **Team Size**: ${input.teamSize} members
|
|
29
|
+
- **Sprint Length**: ${input.sprintLength || 14} days
|
|
30
|
+
- **Team Velocity**: ${calculation.velocity} story points per sprint
|
|
31
|
+
- **Total Tasks**: ${input.tasks.length}
|
|
32
|
+
|
|
33
|
+
### Capacity Analysis
|
|
34
|
+
- **Total Story Points**: ${calculation.totalPoints}
|
|
35
|
+
- **Required Sprints**: ${calculation.requiredSprints}
|
|
36
|
+
- **Timeline**: ${calculation.timelineDays} days (${Math.ceil(calculation.timelineDays / 7)} weeks)
|
|
37
|
+
- **Capacity Utilization**: ${calculation.utilizationPercentage}%
|
|
38
|
+
|
|
39
|
+
### Sprint Summary
|
|
40
|
+
| Sprint | Planned Points | Tasks |
|
|
41
|
+
|-------:|----------------:|-------|
|
|
42
|
+
${calculation.sprints
|
|
43
|
+
.map((s, i) => `| ${i + 1} | ${s.points} | ${s.tasks.map((t) => t.name).join(", ")} |`)
|
|
44
|
+
.join("\n")}
|
|
45
|
+
|
|
46
|
+
### Sprint Breakdown
|
|
47
|
+
${calculation.sprints
|
|
48
|
+
.map((sprint, index) => `**Sprint ${index + 1}** (${sprint.points} points):\n${sprint.tasks
|
|
49
|
+
.map((task) => ` - ${task.name} (${task.estimate} pts)${task.priority ? ` - Priority: ${task.priority}` : ""}`)
|
|
50
|
+
.join("\n")}`)
|
|
51
|
+
.join("\n\n")}
|
|
52
|
+
|
|
53
|
+
### Risk Assessment
|
|
54
|
+
${calculation.risks.map((risk, index) => `${index + 1}. **${risk.level}**: ${risk.description}`).join("\n")}
|
|
55
|
+
|
|
56
|
+
### Recommendations
|
|
57
|
+
${calculation.recommendations.map((rec, index) => `${index + 1}. ${rec}`).join("\n")}
|
|
58
|
+
|
|
59
|
+
### Timeline Optimization Tips
|
|
60
|
+
- **Prioritize high-value tasks** early in the timeline
|
|
61
|
+
- **Address dependencies** before dependent tasks
|
|
62
|
+
- **Plan for 80% capacity** to account for meetings, code reviews, and unexpected issues
|
|
63
|
+
- **Include buffer time** for testing and bug fixes
|
|
64
|
+
- **Regular velocity tracking** to adjust future estimations
|
|
65
|
+
- **Consider skill distribution** when assigning tasks
|
|
66
|
+
|
|
67
|
+
### Velocity Tracking Formula
|
|
68
|
+
\`Velocity = Completed Story Points / Sprint Duration\`
|
|
69
|
+
|
|
70
|
+
Current calculations based on:
|
|
71
|
+
- Industry average: 8-10 story points per developer per sprint
|
|
72
|
+
- Adjusted for team size and sprint length
|
|
73
|
+
- Factoring in 20% overhead for meetings and coordination
|
|
74
|
+
|
|
75
|
+
### Gantt (Mermaid)
|
|
76
|
+
\`\`\`mermaid
|
|
77
|
+
gantt
|
|
78
|
+
dateFormat YYYY-MM-DD
|
|
79
|
+
title Sprint Plan
|
|
80
|
+
%% Accessibility: Title=Project Sprint Plan; Description=Gantt chart of sprints and tasks over time. %%
|
|
81
|
+
${calculation.sprints
|
|
82
|
+
.map((sprint, sIndex) => {
|
|
83
|
+
const section = ` section Sprint ${sIndex + 1}`;
|
|
84
|
+
const start = new Date();
|
|
85
|
+
start.setDate(start.getDate() + sIndex * sprintLen);
|
|
86
|
+
const sanitize = (label) => label.replace(/[|\\]/g, "-").replace(/\s+/g, " ");
|
|
87
|
+
// Place tasks sequentially within the sprint to avoid time gaps.
|
|
88
|
+
let dayOffset = 0;
|
|
89
|
+
const lines = [section];
|
|
90
|
+
let totalDur = 0;
|
|
91
|
+
sprint.tasks.forEach((t, i) => {
|
|
92
|
+
const dur = 1 + Math.max(1, Math.ceil(t.estimate / 2));
|
|
93
|
+
totalDur += dur;
|
|
94
|
+
const taskStart = new Date(start);
|
|
95
|
+
taskStart.setDate(taskStart.getDate() + dayOffset);
|
|
96
|
+
const taskStartStr = taskStart.toISOString().slice(0, 10);
|
|
97
|
+
lines.push(` ${sanitize(t.name)} :s${sIndex + 1}t${i}, ${taskStartStr}, ${dur}d`);
|
|
98
|
+
dayOffset += dur;
|
|
99
|
+
});
|
|
100
|
+
// If tasks don't fill the entire sprint, add a Buffer task to cover remaining days.
|
|
101
|
+
if (totalDur < sprintLen) {
|
|
102
|
+
const rem = sprintLen - totalDur;
|
|
103
|
+
const bufStart = new Date(start);
|
|
104
|
+
bufStart.setDate(bufStart.getDate() + totalDur);
|
|
105
|
+
const bufStartStr = bufStart.toISOString().slice(0, 10);
|
|
106
|
+
lines.push(` Buffer_Review_Testing :s${sIndex + 1}buf, ${bufStartStr}, ${rem}d`);
|
|
107
|
+
}
|
|
108
|
+
return lines.join("\n");
|
|
109
|
+
})
|
|
110
|
+
.join("\n")}
|
|
111
|
+
\`\`\`
|
|
112
|
+
|
|
113
|
+
### References
|
|
114
|
+
- ZenHub — AI-assisted sprint planning (2025): https://www.zenhub.com/blog-posts/the-7-best-ai-assisted-sprint-planning-tools-for-agile-teams-in-2025
|
|
115
|
+
- Nitor Infotech — AI in project delivery: https://www.nitorinfotech.com/blog/ai-in-software-project-delivery-smarter-planning-and-execution/
|
|
116
|
+
`,
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function calculateSprintTimeline(input) {
|
|
122
|
+
const { tasks, teamSize, sprintLength = 14, velocity: inputVelocity } = input;
|
|
123
|
+
// Calculate total story points
|
|
124
|
+
const totalPoints = tasks.reduce((sum, task) => sum + task.estimate, 0);
|
|
125
|
+
// Calculate team velocity if not provided
|
|
126
|
+
// Industry standard: ~8-10 story points per developer per 2-week sprint
|
|
127
|
+
const baseVelocityPerDev = 8;
|
|
128
|
+
const sprintFactor = sprintLength / 14; // Adjust for sprint length
|
|
129
|
+
const calculatedVelocity = Math.round(teamSize * baseVelocityPerDev * sprintFactor * 0.8); // 80% capacity
|
|
130
|
+
const velocity = inputVelocity || calculatedVelocity;
|
|
131
|
+
// Calculate required sprints
|
|
132
|
+
const requiredSprints = Math.ceil(totalPoints / velocity);
|
|
133
|
+
const timelineDays = requiredSprints * sprintLength;
|
|
134
|
+
// Calculate capacity utilization
|
|
135
|
+
const utilizationPercentage = Math.round((totalPoints / (velocity * requiredSprints)) * 100);
|
|
136
|
+
// Organize tasks into sprints
|
|
137
|
+
const sprints = organizeTasks(tasks, velocity, requiredSprints);
|
|
138
|
+
// Risk assessment
|
|
139
|
+
const risks = assessRisks(input, totalPoints, velocity, utilizationPercentage);
|
|
140
|
+
// Generate recommendations
|
|
141
|
+
const recommendations = generateRecommendations(input, utilizationPercentage, requiredSprints);
|
|
142
|
+
return {
|
|
143
|
+
totalPoints,
|
|
144
|
+
velocity,
|
|
145
|
+
requiredSprints,
|
|
146
|
+
timelineDays,
|
|
147
|
+
utilizationPercentage,
|
|
148
|
+
sprints,
|
|
149
|
+
risks,
|
|
150
|
+
recommendations,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function organizeTasks(tasks, velocity, sprintCount) {
|
|
154
|
+
// Sort tasks by priority and dependencies
|
|
155
|
+
const sortedTasks = [...tasks].sort((a, b) => {
|
|
156
|
+
const priorityOrder = { high: 3, medium: 2, low: 1 };
|
|
157
|
+
const aPriority = priorityOrder[a.priority?.toLowerCase()] ||
|
|
158
|
+
2;
|
|
159
|
+
const bPriority = priorityOrder[b.priority?.toLowerCase()] ||
|
|
160
|
+
2;
|
|
161
|
+
return bPriority - aPriority; // Higher priority first
|
|
162
|
+
});
|
|
163
|
+
const sprints = [];
|
|
164
|
+
for (let i = 0; i < sprintCount; i++) {
|
|
165
|
+
sprints.push({ points: 0, tasks: [] });
|
|
166
|
+
}
|
|
167
|
+
// Distribute tasks across sprints
|
|
168
|
+
let currentSprint = 0;
|
|
169
|
+
for (const task of sortedTasks) {
|
|
170
|
+
// Find the sprint with the least points that can accommodate this task
|
|
171
|
+
let targetSprint = currentSprint;
|
|
172
|
+
for (let i = 0; i < sprints.length; i++) {
|
|
173
|
+
if (sprints[i].points + task.estimate <= velocity) {
|
|
174
|
+
if (sprints[i].points < sprints[targetSprint].points ||
|
|
175
|
+
sprints[targetSprint].points + task.estimate > velocity) {
|
|
176
|
+
targetSprint = i;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
sprints[targetSprint].tasks.push(task);
|
|
181
|
+
sprints[targetSprint].points += task.estimate;
|
|
182
|
+
// Move to next sprint if current is full
|
|
183
|
+
if (sprints[currentSprint].points >= velocity * 0.8) {
|
|
184
|
+
currentSprint = (currentSprint + 1) % sprints.length;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return sprints.filter((sprint) => sprint.tasks.length > 0);
|
|
188
|
+
}
|
|
189
|
+
function assessRisks(input, totalPoints, velocity, utilization) {
|
|
190
|
+
const risks = [];
|
|
191
|
+
if (utilization > 90) {
|
|
192
|
+
risks.push({
|
|
193
|
+
level: "High",
|
|
194
|
+
description: "Over 90% capacity utilization may lead to burnout and missed deadlines",
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (input.teamSize < 3) {
|
|
198
|
+
risks.push({
|
|
199
|
+
level: "Medium",
|
|
200
|
+
description: "Small team size increases risk of bottlenecks and knowledge silos",
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (totalPoints > velocity * 10) {
|
|
204
|
+
risks.push({
|
|
205
|
+
level: "High",
|
|
206
|
+
description: "Large scope increases complexity and delivery risk",
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
const hasDependencies = input.tasks.some((task) => task.dependencies && task.dependencies.length > 0);
|
|
210
|
+
if (hasDependencies) {
|
|
211
|
+
risks.push({
|
|
212
|
+
level: "Medium",
|
|
213
|
+
description: "Task dependencies may cause delays if not properly managed",
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (risks.length === 0) {
|
|
217
|
+
risks.push({
|
|
218
|
+
level: "Low",
|
|
219
|
+
description: "Timeline appears achievable with current team configuration",
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
return risks;
|
|
223
|
+
}
|
|
224
|
+
function generateRecommendations(input, utilization, sprints) {
|
|
225
|
+
const recommendations = [];
|
|
226
|
+
if (utilization > 85) {
|
|
227
|
+
recommendations.push("Consider reducing scope or adding team members to avoid overcommitment");
|
|
228
|
+
}
|
|
229
|
+
if (sprints > 6) {
|
|
230
|
+
recommendations.push("Long timeline detected - consider breaking into smaller releases");
|
|
231
|
+
}
|
|
232
|
+
if (input.teamSize > 8) {
|
|
233
|
+
recommendations.push("Large team size - ensure clear communication channels and role definitions");
|
|
234
|
+
}
|
|
235
|
+
recommendations.push("Implement daily standups to track progress and identify blockers early");
|
|
236
|
+
recommendations.push("Plan for 20% buffer time to handle unexpected issues");
|
|
237
|
+
recommendations.push("Review and adjust velocity after each sprint based on actual completion");
|
|
238
|
+
return recommendations;
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=sprint-timeline-calculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint-timeline-calculator.js","sourceRoot":"","sources":["../../src/tools/sprint-timeline-calculator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mcp-ai-agent-guidelines",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A comprehensive Model Context Protocol server providing professional tools, resources, and prompts for implementing AI agent best practices",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"start": "npm run build && node dist/index.js",
|
|
10
|
+
"dev": "tsc --watch",
|
|
11
|
+
"test": "npm run test:all",
|
|
12
|
+
"test:unit": "node tests/unit/run-unit-tests.js",
|
|
13
|
+
"test:integration": "node tests/test-server.js",
|
|
14
|
+
"test:demo": "node demos/demo-tools.js",
|
|
15
|
+
"test:mcp": "scripts/test-mcp-server.sh",
|
|
16
|
+
"test:all": "npm run build && npm run test:unit && npm run test:integration && npm run test:demo && npm run test:mcp",
|
|
17
|
+
"lint": "biome lint src/",
|
|
18
|
+
"lint:fix": "biome lint --write src/",
|
|
19
|
+
"format": "biome format --write src/",
|
|
20
|
+
"format:check": "biome format src/",
|
|
21
|
+
"check": "biome check --write src/",
|
|
22
|
+
"type-check": "tsc --noEmit",
|
|
23
|
+
"quality": "npm run type-check && npm run check",
|
|
24
|
+
"validate": "npm run lint && npm run type-check && npm run test:all"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"mcp",
|
|
28
|
+
"model-context-protocol",
|
|
29
|
+
"ai-agent",
|
|
30
|
+
"development",
|
|
31
|
+
"guidelines",
|
|
32
|
+
"tools",
|
|
33
|
+
"prompts",
|
|
34
|
+
"best-practices",
|
|
35
|
+
"hierarchical-prompting",
|
|
36
|
+
"code-hygiene",
|
|
37
|
+
"mermaid",
|
|
38
|
+
"memory-optimization",
|
|
39
|
+
"sprint-planning"
|
|
40
|
+
],
|
|
41
|
+
"author": "Anselmoo",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "https://github.com/Anselmoo/mcp-ai-agent-guidelines.git"
|
|
46
|
+
},
|
|
47
|
+
"homepage": "https://github.com/Anselmoo/mcp-ai-agent-guidelines#readme",
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/Anselmoo/mcp-ai-agent-guidelines/issues"
|
|
50
|
+
},
|
|
51
|
+
"bin": {
|
|
52
|
+
"mcp-ai-agent-guidelines": "dist/index.js"
|
|
53
|
+
},
|
|
54
|
+
"files": [
|
|
55
|
+
"dist",
|
|
56
|
+
"README.md",
|
|
57
|
+
"LICENSE"
|
|
58
|
+
],
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=20.0.0",
|
|
61
|
+
"npm": ">=10.0.0"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@biomejs/biome": "2.1.3",
|
|
65
|
+
"@types/node": "^24.1.0",
|
|
66
|
+
"typescript": "^5.9.2"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@modelcontextprotocol/sdk": "^1.17.1",
|
|
70
|
+
"@types/express": "^5.0.3",
|
|
71
|
+
"express": "^5.1.0",
|
|
72
|
+
"mermaid": "^11.0.0",
|
|
73
|
+
"zod": "^3.25.76"
|
|
74
|
+
}
|
|
75
|
+
}
|