Intelligent portfolio management for development projects following the Spec-Kit methodology
SKM automatically discovers, analyzes, and prioritizes your development projects, helping you focus on what matters most.
- π Smart Discovery - Automatically finds all Spec-Kit projects in your workspace
- π Dual Structure Support - Works with both
.specify/andspecs/directory layouts - β Flexible Task Tracking - Parses multiple formats: checkboxes, IDs (T001:), emojis (β β), keywords
- π― Intelligent Prioritization - Multi-factor scoring based on urgency, risk, and impact
- π Progress Tracking - Automatic stage detection across project lifecycle
- β‘ High Performance - Optimized parsing (50-100x faster than naive approaches)
- π Rich Reporting - Generate Markdown and JSON reports
- π Smart Caching - Fast status updates with intelligent cache invalidation
# Clone and build
git clone https://github.com/t3chn/skm.git
cd skm
cargo build --release
# Optional: Install globally
cargo install --path .# Scan your projects
skm scan --root ~/projects
# View portfolio status
skm status
# Filter high-priority projects
skm status --only needs-attention
# Enable detailed logging
SKM_DEBUG=1 skm scanFound: crypto-trader [Implement] Priority: 61.6
Found: web-dashboard [Review] Priority: 45.3
Found: api-service [Test] Priority: 38.9
=== Scan Complete ===
Projects found: 15
Need attention: 12
Tasks: 510/852 completed (59.9%)
Average priority: 55.3
Scan time: 1670ms
SKM scans your workspace for Spec-Kit projects and supports two structures:
Standard Layout:
my-project/
βββ .specify/
β βββ constitution.md
β βββ spec.md
β βββ plan.md
β βββ tasks.md
Feature-Based Layout:
my-project/
βββ specs/
β βββ 001-user-authentication/
β β βββ spec.md
β β βββ plan.md
β β βββ tasks.md
β βββ 002-payment-processing/
β β βββ ...
SKM understands multiple task formats:
- [ ] Standard checkbox
- [x] Completed checkbox
- [ ] T001: Task with ID
T002: Standalone task ID
β
Emoji completed
β Emoji incomplete
π In progress
TODO: Keyword format
DONE: Completed keywordSpecial markers:
[P]or||- Parallel execution[BLOCKED]or π« - Blocked task
Priority score uses weighted formula:
Score = wβΓNeedsHuman + wβΓRisk + wβΓStaleness + wβΓImpact - wβ
ΓConfidence
Default weights:
- Human attention needed: 40%
- Risk level: 25%
- Time since update: 15%
- Project impact: 15%
- Confidence: -10%
skm scan # Scan current directory
skm scan --root /path/to/projects # Scan specific locationGenerates:
.skm/STATUS.md- Markdown report.skm/status.json- Cached data
skm status # Show all projects
skm status --json # JSON output
skm status --only needs-attention # Filter high-priority
skm status --only incomplete # Filter active tasks
skm status --only stage:implement # Filter by stageskm report --format md # Markdown (default)
skm report --format json # JSON export
skm report --format table # Terminal table
skm report --out custom.md # Custom output pathSKM looks for configuration at ~/.config/skm/config.toml:
# Priority calculation weights
[weights]
needs_human = 40.0 # Human attention required
risk = 25.0 # Risk assessment
staleness = 15.0 # Days since update
impact = 15.0 # Project importance
confidence = 10.0 # Solution certainty
# General settings
attention_threshold = 50.0 # Priority threshold for "needs attention"
scan_depth = 5 # Maximum directory depth
default_editor = "nvim" # Editor for manual edits
# External services (future)
qdrant_url = "http://localhost:6333"
automation_level = "L1"Store per-project settings in .skm/meta.json:
{
"projects": {
"critical-service": {
"impact": 3, # 1-3 scale
"approved_by_human": true,
"automation_level": "L2"
}
}
}skm/
βββ src/
β βββ scanner/ # Project discovery & parsing
β βββ analyzer/ # Stage detection & prioritization
β βββ reporter/ # Report generation
β βββ meta/ # Configuration & state management
β βββ rag/ # Vector search (future)
β βββ autopilot/ # Automation engine (future)
β βββ session/ # Session management (future)
Bootstrap β Specify β Plan β Tasks β Implement β Test β Review β Done
Each stage has specific requirements and next actions.
# Run tests
cargo test
# Run with logging
RUST_LOG=debug cargo run -- scan
# Format code
cargo fmt
# Lint
cargo clippy
# Build release
cargo build --release- Scan Speed: ~1-2s for 15 projects
- Task Parsing: 50-100x faster with optimized regex
- Memory: Minimal overhead, efficient caching
- Disk Usage: Status cache < 100KB
- Core scanning and prioritization
- Multiple task format support
- Feature-based directory support
- Status caching
- RAG-based semantic search
- Automation engine with safety levels
- tmux session management
- GitHub integration
- Interactive TUI mode
- Watch mode for continuous monitoring
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details.
Built for the Spec-Kit methodology by @klueless-io
Made with β€οΈ using Rust and Claude Code