关于 portfolio-artifact
portfolio-artifact 是面向 Go-To-Market Engineer 的开发指标追踪技能,可从开发会话记录交付量、成本和效率指标。它生成每周摘要与高管报告,指标保存在本地 JSONL 文件中。
主要功能
- 01记录提交、文件变更和代码行数
- 02统计功能、缺陷修复及测试变更
- 03计算功能和修复的成本指标
- 04生成每周摘要和高管报告
- 05将每日指标存入 JSONL
适用场景
- 01回顾每周功能交付与缺陷修复
- 02为利益相关方整理工程影响报告
- 03比较项目成本和交付趋势
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ scientiacapital/ skills --skill portfolio-artifact安装后在 Claude Code 中输入/portfolio-artifact确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
config.jsonreference/metrics-guide.mdreport-templates.md详细介绍
自动从开发会话中提取 Go-To-Market Engineer 作品集指标。记录已交付的代码行数、变更的文件数、修复的错误数、新增的测试数、合并的 PR 数、节省的时间以及每项功能的成本。生成高管摘要和每周简报。
<quick_start> 记录今天的指标:
# Quick session stats
echo "Commits: $(git log --since='today 00:00' --oneline | wc -l | tr -d ' ')"
echo "Files changed: $(git diff --stat $(git log --since='today 00:00' --format='%H' | tail -1)..HEAD 2>/dev/null | tail -1)"
生成每周报告:
cat ~/.claude/portfolio/daily-metrics.jsonl | jq -s 'map(select(.date >= "'$(date -v-7d +%Y-%m-%d)'"))'
</quick_start>
<success_criteria>
- 通过 End Day 协议自动记录每日指标(提交、功能、修复、成本)
- 计算派生指标:每项功能的成本、每个错误修复的成本、每美元交付的代码行数
- 生成每周简报,包含项目细分和逐日趋势
- 准备好供利益相关者审阅的高管摘要,并附带环比比较
- 指标持久化存储于
~/.claude/portfolio/daily-metrics.jsonl</success_criteria>
记录的指标
每个会话(End Day 自动记录)
| 指标 | 来源 | 方式 |
|---|---|---|
| 提交 | git log --since="today" | 计数 |
| 变更的文件 | git diff --stat | 统计差异中的文件数 |
| 新增/删除的代码行数 | git diff --stat | 解析 +/- |
| 新增的测试 | git diff --stat -- '*.test.*' | 统计测试文件数 |
| 创建的 PR | gh pr list --author @me | GitHub CLI |
| 修复的错误 | 匹配 fix: 的提交 | Conventional commits |
| 交付的功能 | 匹配 feat: 的提交 | Conventional commits |
| 成本 | ~/.claude/daily-cost.json | 每日支出 |
派生指标
| 指标 | 公式 | 重要性 |
|---|---|---|
| 每项功能的成本 | 总成本 / feat: 提交数 | 效率 |
| 每个错误修复的成本 | 总成本 / fix: 提交数 | 调试投资回报率 |
| 每美元交付的代码行数 | 已交付的代码行数 / 总成本 | 生产力 |
| 测试覆盖率变化 | 新增的测试数 / 变更的文件数 | 质量信号 |
收集
自动收集(End Day 协议)
workflow-orchestrator 的 End Day 协议会自动调用此功能:
#!/bin/bash
# Auto-capture at end of day
DATE=$(date +%Y-%m-%d)
COMMITS=$(git log --since="today 00:00" --oneline 2>/dev/null | wc -l | tr -d ' ')
FEATS=$(git log --since="today 00:00" --oneline --grep="^feat" 2>/dev/null | wc -l | tr -d ' ')
FIXES=$(git log --since="today 00:00" --oneline --grep="^fix" 2>/dev/null | wc -l | tr -d ' ')
COST=$(cat ~/.claude/daily-cost.json 2>/dev/null | jq '.spent // 0')
mkdir -p ~/.claude/portfolio
echo "{\"date\":\"$DATE\",\"commits\":$COMMITS,\"features\":$FEATS,\"fixes\":$FIXES,\"cost\":$COST}" >> ~/.claude/portfolio/daily-metrics.jsonl
手动收集(按需)
# Full session capture with git stats
STAT=$(git diff --stat $(git log --since="today 00:00" --format="%H" | tail -1)..HEAD 2>/dev/null | tail -1)
ADDED=$(echo "$STAT" | grep -oE '[0-9]+ insertion' | grep -oE '[0-9]+' || echo 0)
REMOVED=$(echo "$STAT" | grep -oE '[0-9]+ deletion' | grep -oE '[0-9]+' || echo 0)
echo "Today: +$ADDED/-$REMOVED lines, $COMMITS commits ($FEATS features, $FIXES fixes)"
报告模板
高管摘要(高管层)
## Engineering Impact — Week of [DATE]
**Headline:** Shipped [N] features, fixed [N] bugs across [N] projects
| Metric | This Week | Last Week | Trend |
|--------|-----------|-----------|-------|
| Features shipped | 5 | 3 | ↑ 67% |
| Bugs fixed | 8 | 12 | ↓ 33% |
| Lines shipped | 1,247 | 890 | ↑ 40% |
| Cost | $12.40 | $15.20 | ↓ 18% |
| Cost/feature | $2.48 | $5.07 | ↓ 51% |
**Key Deliverables:**
- [Feature 1]: [Impact]
- [Feature 2]: [Impact]
**Cost Optimization:** Shifted [N] tasks to Haiku, saving $[X] (Y% reduction)
每周简报
## Weekly Digest — [DATE RANGE]
### By Project
| Project | Commits | Features | Fixes | Cost |
|---------|---------|----------|-------|------|
| skills-library | 12 | 5 | 2 | $3.40 |
| netzero-bot | 8 | 2 | 4 | $5.20 |
### By Day
| Day | Commits | Lines | Cost |
|-----|---------|-------|------|
| Mon | 5 | +234/-45 | $1.80 |
| Tue | 8 | +567/-123 | $2.40 |
| ... | ... | ... | ... |
### Insights
- Most productive day: Tuesday (567 lines)
- Most expensive feature: [feature] ($X)
- Cheapest bug fix: [fix] ($0.12, Haiku)
迭代报告
## Sprint Report — [SPRINT NAME]
**Duration:** [START] → [END]
**Total Cost:** $[X]
### Deliverables
- [ ] Feature A (shipped, $X)
- [ ] Feature B (shipped, $X)
- [ ] Bug fix C (shipped, $X)
### Velocity
- Story points completed: [N]
- Cost per story point: $[X]
- Average cycle time: [N] hours
存储
~/.claude/portfolio/
├── daily-metrics.jsonl # One JSON line per day
├── weekly-YYYY-WW.md # Auto-generated weekly digest
└── monthly-YYYY-MM.md # Auto-generated monthly summary
集成
| 系统 | 集成方式 |
|---|---|
| workflow-orchestrator | End Day 自动记录每日指标 |
| cost-metering | 提供每项功能成本所需的成本数据 |
| git-workflow | Conventional commits 支持统计 feat/fix 数量 |
| agent-teams | 跟踪多 Agent 会话成本 |
**深入了解:**参见 reference/metrics-guide.md、reference/report-templates.md
输出结果旁文件
作为最后一步,写入 ~/.claude/skill-analytics/last-outcome-portfolio-artifact.json:
{"ts":"[UTC ISO8601]","skill":"portfolio-artifact","version":"1.0.0","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"metrics_captured":[n],"artifacts_generated":[n],"reports_created":[n]},
"error":null,"session_id":"[YYYY-MM-DD]"}
如果某些阶段失败但仍生成了结果,请使用状态 "partial"。只有在未生成任何输出时,才使用 "error"。
评论
支持 Markdown