claude-kanban 0.6.3 → 0.6.6
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/dist/bin/cli.js +110 -61
- package/dist/bin/cli.js.map +1 -1
- package/dist/server/index.js +110 -61
- package/dist/server/index.js.map +1 -1
- package/package.json +1 -1
package/dist/bin/cli.js
CHANGED
|
@@ -1982,6 +1982,7 @@ var RoadmapService = class extends EventEmitter2 {
|
|
|
1982
1982
|
phase: f.phase,
|
|
1983
1983
|
rationale: f.rationale || "",
|
|
1984
1984
|
steps: f.steps,
|
|
1985
|
+
acceptanceCriteria: f.acceptanceCriteria,
|
|
1985
1986
|
addedToKanban: false
|
|
1986
1987
|
})),
|
|
1987
1988
|
competitors,
|
|
@@ -1995,68 +1996,83 @@ var RoadmapService = class extends EventEmitter2 {
|
|
|
1995
1996
|
}
|
|
1996
1997
|
}
|
|
1997
1998
|
/**
|
|
1998
|
-
* Build the competitor research prompt
|
|
1999
|
+
* Build the competitor research prompt (inspired by Auto-Claude)
|
|
1999
2000
|
*/
|
|
2000
2001
|
buildCompetitorResearchPrompt(projectInfo) {
|
|
2001
|
-
return `You are a
|
|
2002
|
+
return `You are a Competitor Analysis Agent. This is a NON-INTERACTIVE autonomous task - you CANNOT ask questions or request clarification. Make educated inferences from available information.
|
|
2002
2003
|
|
|
2003
|
-
|
|
2004
|
+
## Your Role
|
|
2005
|
+
Research competitors, analyze user feedback, and document pain points to inform feature prioritization.
|
|
2004
2006
|
|
|
2005
|
-
## Project
|
|
2007
|
+
## Project Context
|
|
2006
2008
|
- Name: ${projectInfo.name}
|
|
2007
2009
|
- Description: ${projectInfo.description}
|
|
2008
2010
|
- Tech Stack: ${projectInfo.stack.join(", ") || "Unknown"}
|
|
2009
2011
|
|
|
2010
|
-
##
|
|
2011
|
-
1.
|
|
2012
|
-
2.
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2012
|
+
## Research Process
|
|
2013
|
+
1. DISCOVERY: Identify 3-5 main competitors (direct competitors, market leaders, alternative solutions)
|
|
2014
|
+
2. FEEDBACK COLLECTION: Gather real user complaints from:
|
|
2015
|
+
- App store reviews
|
|
2016
|
+
- Reddit discussions
|
|
2017
|
+
- GitHub issues
|
|
2018
|
+
- Stack Overflow questions
|
|
2019
|
+
- Twitter/social media
|
|
2020
|
+
3. PAIN POINT ANALYSIS: Extract patterns - missing features, UX problems, performance issues, pricing concerns
|
|
2021
|
+
|
|
2022
|
+
## Critical Requirements
|
|
2023
|
+
- Document sources for every pain point (no fabricated data)
|
|
2024
|
+
- Focus on authentic user feedback, not just feature lists
|
|
2025
|
+
- Include severity ratings where possible
|
|
2026
|
+
- Identify market gaps and opportunities
|
|
2027
|
+
|
|
2028
|
+
## Required Output
|
|
2029
|
+
Return ONLY valid JSON (no markdown, no explanations). Begin with [ and end with ]:
|
|
2018
2030
|
|
|
2019
2031
|
[
|
|
2020
2032
|
{
|
|
2021
2033
|
"name": "Competitor Name",
|
|
2022
2034
|
"url": "https://example.com",
|
|
2023
2035
|
"strengths": ["strength 1", "strength 2"],
|
|
2024
|
-
"weaknesses": ["weakness 1", "weakness 2"],
|
|
2025
|
-
"differentiators": ["feature 1", "feature 2"]
|
|
2036
|
+
"weaknesses": ["weakness 1 - based on user feedback from [source]", "weakness 2"],
|
|
2037
|
+
"differentiators": ["unique feature 1", "unique feature 2"],
|
|
2038
|
+
"painPoints": ["user complaint 1", "user complaint 2"],
|
|
2039
|
+
"marketGaps": ["opportunity 1"]
|
|
2026
2040
|
}
|
|
2027
2041
|
]
|
|
2028
2042
|
|
|
2029
|
-
Begin your response with [
|
|
2043
|
+
Begin your response with [ - no other text.`;
|
|
2030
2044
|
}
|
|
2031
2045
|
/**
|
|
2032
|
-
* Build the roadmap generation prompt
|
|
2046
|
+
* Build the roadmap generation prompt (inspired by Auto-Claude)
|
|
2033
2047
|
*/
|
|
2034
2048
|
buildRoadmapPrompt(projectInfo, competitors, request) {
|
|
2035
|
-
let prompt = `You are a
|
|
2036
|
-
|
|
2037
|
-
##
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
${projectInfo.
|
|
2042
|
-
|
|
2043
|
-
|
|
2049
|
+
let prompt = `You are a Roadmap Feature Generator Agent. This is a NON-INTERACTIVE autonomous task - you CANNOT ask questions or request clarification. Make educated inferences from available information.
|
|
2050
|
+
|
|
2051
|
+
## Your Role
|
|
2052
|
+
Convert project context into a strategic, prioritized feature roadmap with phased organization.
|
|
2053
|
+
|
|
2054
|
+
## Project Context
|
|
2055
|
+
- Name: ${projectInfo.name}
|
|
2056
|
+
- Description: ${projectInfo.description}
|
|
2057
|
+
- Tech Stack: ${projectInfo.stack.join(", ") || "Unknown"}
|
|
2058
|
+
${projectInfo.existingFeatures.length > 0 ? `- Existing Features: ${projectInfo.existingFeatures.join(", ")}` : ""}
|
|
2044
2059
|
`;
|
|
2045
2060
|
if (competitors && competitors.length > 0) {
|
|
2046
2061
|
prompt += `
|
|
2047
|
-
## Competitor
|
|
2062
|
+
## Competitor Intelligence
|
|
2063
|
+
Use this data to identify opportunities and prioritize features that address market gaps.
|
|
2048
2064
|
${competitors.map((c) => `
|
|
2049
|
-
### ${c.name}
|
|
2065
|
+
### ${c.name}${c.url ? ` (${c.url})` : ""}
|
|
2050
2066
|
- Strengths: ${c.strengths.join(", ")}
|
|
2051
2067
|
- Weaknesses: ${c.weaknesses.join(", ")}
|
|
2052
|
-
-
|
|
2053
|
-
`).join("
|
|
2068
|
+
- Differentiators: ${c.differentiators.join(", ")}
|
|
2069
|
+
`).join("")}
|
|
2054
2070
|
`;
|
|
2055
2071
|
}
|
|
2056
2072
|
if (request.focusAreas && request.focusAreas.length > 0) {
|
|
2057
2073
|
prompt += `
|
|
2058
2074
|
## Focus Areas
|
|
2059
|
-
|
|
2075
|
+
Prioritize features related to: ${request.focusAreas.join(", ")}
|
|
2060
2076
|
`;
|
|
2061
2077
|
}
|
|
2062
2078
|
if (request.customPrompt) {
|
|
@@ -2066,57 +2082,75 @@ ${request.customPrompt}
|
|
|
2066
2082
|
`;
|
|
2067
2083
|
}
|
|
2068
2084
|
prompt += `
|
|
2069
|
-
##
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
-
|
|
2078
|
-
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2085
|
+
## Workflow
|
|
2086
|
+
1. Analyze project goals and user needs
|
|
2087
|
+
2. Apply MoSCoW prioritization (must/should/could/wont)
|
|
2088
|
+
3. Assess complexity and impact for each feature
|
|
2089
|
+
4. Organize into logical phases with dependencies
|
|
2090
|
+
5. Generate structured roadmap output
|
|
2091
|
+
|
|
2092
|
+
## Standard Phases
|
|
2093
|
+
- Foundation: Core infrastructure and essential features
|
|
2094
|
+
- Enhancement: Improved UX and additional functionality
|
|
2095
|
+
- Scale: Performance, integrations, advanced features
|
|
2096
|
+
- Future: Long-term vision and nice-to-haves
|
|
2097
|
+
|
|
2098
|
+
## MoSCoW Framework
|
|
2099
|
+
- must: Critical for launch, blocks everything else
|
|
2100
|
+
- should: Important but not blocking
|
|
2101
|
+
- could: Nice to have, implement if time permits
|
|
2102
|
+
- wont: Out of scope for current planning horizon
|
|
2103
|
+
|
|
2104
|
+
## Priority Matrix
|
|
2105
|
+
- High Impact + Low Effort = Do First (must)
|
|
2106
|
+
- High Impact + High Effort = Plan Carefully (should)
|
|
2107
|
+
- Low Impact + Low Effort = Quick Wins (could)
|
|
2108
|
+
- Low Impact + High Effort = Deprioritize (wont)
|
|
2109
|
+
|
|
2110
|
+
## Required Output Schema
|
|
2111
|
+
Return ONLY valid JSON. Begin with { and end with }:
|
|
2088
2112
|
|
|
2089
2113
|
{
|
|
2090
|
-
"projectDescription": "
|
|
2091
|
-
"targetAudience": "
|
|
2114
|
+
"projectDescription": "Inferred project purpose and value proposition",
|
|
2115
|
+
"targetAudience": "Primary user persona",
|
|
2092
2116
|
"phases": [
|
|
2093
2117
|
{
|
|
2094
|
-
"name": "
|
|
2095
|
-
"description": "Core features for
|
|
2118
|
+
"name": "Foundation",
|
|
2119
|
+
"description": "Core features required for initial launch"
|
|
2096
2120
|
},
|
|
2097
2121
|
{
|
|
2098
|
-
"name": "
|
|
2122
|
+
"name": "Enhancement",
|
|
2099
2123
|
"description": "Features to improve user experience"
|
|
2124
|
+
},
|
|
2125
|
+
{
|
|
2126
|
+
"name": "Scale",
|
|
2127
|
+
"description": "Growth and advanced capabilities"
|
|
2100
2128
|
}
|
|
2101
2129
|
],
|
|
2102
2130
|
"features": [
|
|
2103
2131
|
{
|
|
2104
2132
|
"title": "Feature title",
|
|
2105
|
-
"description": "What this feature does",
|
|
2133
|
+
"description": "What this feature does and why users need it",
|
|
2106
2134
|
"priority": "must",
|
|
2107
2135
|
"category": "functional",
|
|
2108
2136
|
"effort": "medium",
|
|
2109
2137
|
"impact": "high",
|
|
2110
|
-
"phase": "
|
|
2111
|
-
"rationale": "Why this feature
|
|
2112
|
-
"steps": ["
|
|
2138
|
+
"phase": "Foundation",
|
|
2139
|
+
"rationale": "Why this feature matters - reference competitor gaps if applicable",
|
|
2140
|
+
"steps": ["Implementation step 1", "Implementation step 2"],
|
|
2141
|
+
"acceptanceCriteria": ["User can do X", "System handles Y"]
|
|
2113
2142
|
}
|
|
2114
2143
|
]
|
|
2115
2144
|
}
|
|
2116
2145
|
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2146
|
+
## Critical Requirements
|
|
2147
|
+
- Generate 10-20 features across 3-4 phases
|
|
2148
|
+
- Each feature must have clear acceptance criteria
|
|
2149
|
+
- Don't duplicate existing project features
|
|
2150
|
+
- Reference competitor insights in rationale where relevant
|
|
2151
|
+
- Be specific and actionable, not generic
|
|
2152
|
+
|
|
2153
|
+
Begin your response with { - no other text.`;
|
|
2120
2154
|
return prompt;
|
|
2121
2155
|
}
|
|
2122
2156
|
/**
|
|
@@ -2129,6 +2163,19 @@ Begin your response with { - no other text before or after the JSON.`;
|
|
|
2129
2163
|
const model = this.config?.agent.model;
|
|
2130
2164
|
const promptPath = join5(this.projectPath, ROADMAP_DIR, "prompt-roadmap.txt");
|
|
2131
2165
|
writeFileSync5(promptPath, prompt);
|
|
2166
|
+
const allowedTools = [
|
|
2167
|
+
// Core web tools
|
|
2168
|
+
"WebSearch",
|
|
2169
|
+
"WebFetch",
|
|
2170
|
+
// File tools for codebase analysis
|
|
2171
|
+
"Read",
|
|
2172
|
+
"Glob",
|
|
2173
|
+
"Grep",
|
|
2174
|
+
// Firecrawl MCP tools for better web research
|
|
2175
|
+
"mcp__firecrawl__firecrawl_search",
|
|
2176
|
+
"mcp__firecrawl__firecrawl_scrape",
|
|
2177
|
+
"mcp__firecrawl__firecrawl_extract"
|
|
2178
|
+
].join(",");
|
|
2132
2179
|
const args = [
|
|
2133
2180
|
"--permission-mode",
|
|
2134
2181
|
permissionMode,
|
|
@@ -2136,6 +2183,8 @@ Begin your response with { - no other text before or after the JSON.`;
|
|
|
2136
2183
|
"--verbose",
|
|
2137
2184
|
"--output-format",
|
|
2138
2185
|
"text",
|
|
2186
|
+
"--allowedTools",
|
|
2187
|
+
allowedTools,
|
|
2139
2188
|
`@${promptPath}`
|
|
2140
2189
|
];
|
|
2141
2190
|
if (model) {
|