Agent skill
portfolio-artifact
Auto-extract GTME metrics from work sessions. Lines shipped, bugs fixed, PRs merged, cost per feature. Weekly digests and executive summaries. Use when: capture metrics, portfolio report, what did I ship, weekly summary.
Install this agent skill to your Project
npx add-skill https://github.com/ScientiaCapital/skills/tree/main/active/portfolio-artifact-skill
SKILL.md
<quick_start> Capture today's metrics:
# 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)"
Generate weekly report:
cat ~/.claude/portfolio/daily-metrics.jsonl | jq -s 'map(select(.date >= "'$(date -v-7d +%Y-%m-%d)'"))'
</quick_start>
<success_criteria>
- Daily metrics captured automatically via End Day protocol (commits, features, fixes, cost)
- Derived metrics calculated: cost-per-feature, cost-per-bug-fix, lines-per-dollar
- Weekly digest generated with project breakdown and day-by-day trends
- Executive summary ready for stakeholder review with week-over-week comparisons
- Metrics stored persistently at
~/.claude/portfolio/daily-metrics.jsonl</success_criteria>
Metrics Captured
Per Session (End Day auto-capture)
| Metric | Source | How |
|---|---|---|
| Commits | git log --since="today" |
Count |
| Files changed | git diff --stat |
Count from diff |
| Lines added/removed | git diff --stat |
Parse +/- |
| Tests added | git diff --stat -- '*.test.*' |
Count test files |
| PRs created | gh pr list --author @me |
GitHub CLI |
| Bugs fixed | Commits matching fix: |
Conventional commits |
| Features shipped | Commits matching feat: |
Conventional commits |
| Cost | ~/.claude/daily-cost.json |
Daily spend |
Derived Metrics
| Metric | Formula | Why It Matters |
|---|---|---|
| Cost per feature | Total cost / feat: commits | Efficiency |
| Cost per bug fix | Total cost / fix: commits | ROI on debugging |
| Lines per dollar | Lines shipped / total cost | Productivity |
| Test coverage delta | Tests added / files changed | Quality signal |
Collection
Automatic (End Day Protocol)
The workflow-orchestrator End Day protocol calls this automatically:
#!/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
Manual (On-Demand)
# 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)"
Report Templates
Executive Summary (C-Suite)
## 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
## 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 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
Storage
~/.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
Integration
| System | Integration |
|---|---|
| workflow-orchestrator | End Day auto-captures daily metrics |
| cost-metering | Provides cost data for cost-per-feature |
| git-workflow | Conventional commits enable feat/fix counting |
| agent-teams | Tracks multi-agent session costs |
Deep dive: See reference/metrics-guide.md, reference/report-templates.md
Emit Outcome Sidecar
As the final step, write to ~/.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]"}
Use status "partial" if some stages failed but results were produced. Use "error" only if no output was generated.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
project-context
Maintains project context and progress tracking across Claude sessions. Use at session start to load context, on session end to save progress. Triggers: load project context, save context, end session, what was I working on, switch to project, done for today.
workflow-enforcer-skill
Enforces workflow discipline across ALL projects. Ensures Claude checks for specialized agents before responding, announces skill/agent usage, and creates TodoWrite todos for multi-step tasks. Triggers: automatic on all sessions, use the right agent, follow workflow.
gtm-pricing
B2B go-to-market strategy, pricing models, ICP development, positioning, and competitive intelligence. Use when planning GTM strategy, setting pricing, defining ICP, or evaluating opportunities.
subagent-teams
Orchestrate in-session Task tool teams for parallel work. Fan-out research, implementation, review, and documentation across subagents. Use when: parallel tasks, fan-out, subagent team, Task tool, in-session agents.
planning-prompts
Comprehensive skill for project planning and prompt engineering. Covers hierarchical plans (briefs, roadmaps, phases), Claude-to-Claude meta-prompts, and multi-stage workflows. Use when: planning, prompt creation, agentic pipeline work, project roadmap, meta-prompts, research to implement workflow.
linkedin-sales-navigator-alt-skill
Build targeted prospect lists by analyzing LinkedIn profiles, extracting job titles, companies, locations, and recent activity. Identifies decision-makers, tracks job changes for warm outreach, and enriches contact data. Use when users need to find prospects, build lead lists, or track decision-maker movements.
Didn't find tool you were looking for?