project-pulse
npx skills add https://github.com/holon-run/holon --skill project-pulse
Agent 安装分布
Skill 文档
Project Pulse
Overview
Use this skill when you need a product-manager and architect view of project health from GitHub issues and PRs.
This skill follows a GitHub-first sync model:
- GitHub is the source of truth.
- Local files are cache and analysis artifacts.
When To Use
Use this skill for:
- Daily/weekly priority sync.
- Controller planning refresh before autonomous actions.
- Detecting stale issues and priority drift.
- Generating a compact PM report for discussion.
- Converting repo state into an execution plan (what to do next, what can run in parallel, what should be deferred).
Do not use this skill for:
- Code implementation of issues.
- PR review or PR fix execution.
Workflow
- Resolve target repo (
owner/repo) from argument,PULSE_REPO, or git remote. - Read local pulse artifacts first (
report.json,issues-index.json,prs-index.json). - If cache is stale, pull issue and PR data from GitHub (
gh issue list,gh pr list). - Update local sync state (
sync-state.json) with latest cursor (last_max_updated_at). - Generate analysis artifacts:
issues/+issues-index.jsonprs/+prs-index.jsonreport.jsonreport.mdsync-state.json
- Produce planning decisions from report signals:
- Priority plan (
P0/P1/P2mapping from labels + risk signals) - Parallel work lanes (independent streams)
- Blockers and preconditions (e.g., failing PR checks before new feature work)
- Suggested next actions for controller triggers
Default Read Path (Required)
For priority/planning/risk analysis, always use this order:
- Read
${PULSE_BASE_DIR}/report.json - Read
${PULSE_BASE_DIR}/issues-index.jsonand${PULSE_BASE_DIR}/prs-index.json - Refresh from GitHub only when cache is stale or explicitly forced
Do not start with direct gh issue list / gh pr list queries when pulse cache is fresh.
Controller Rule (Required)
When the request is about prioritization, planning, risk, sequencing, or architecture status:
- Run
project-pulsefirst - Base conclusions on pulse artifacts
- Use direct GitHub API reads only as fallback/verification for specific missing fields
Planning And Design Guidance
Use report.json as a decision input, not just a status snapshot.
Decision order:
- Stabilize execution surface first:
- If
pr_totals.failing_checks > 0, prioritize PR fixes before opening new implementation threads. - If
pr_totals.changes_requested > 0, prioritize review feedback closure to reduce queue latency.
- Protect top-priority delivery:
- Treat
priority:criticalissues as daily-sync queue. - Keep WIP bounded; avoid starting medium-priority work while critical queue is growing.
- Control flow health:
- Use
stale_issuesandstalled_prsto detect drift and assign owner/escalation actions.
- Plan architecture increments:
- Use pulse results to split work into independent lanes (runtime/core, policy/controller, quality/security).
- Avoid coupling unrelated architecture changes in one run.
Suggested controller action mapping:
failing_prsnot empty -> triggergithub-pr-fixready_to_merge_candidatesnot empty -> run merge-policy check or human-review gatepriority:criticalissue queue not empty and PR surface stable -> triggergithub-issue-solve- no urgent signals -> no-op / wait and continue monitoring
Script
Run scripts/pulse.sh.
Examples:
# Use current git repo remote
skills/project-pulse/scripts/pulse.sh
# Explicit repo
skills/project-pulse/scripts/pulse.sh holon-run/holon
# Include closed issues in analysis
PULSE_INCLUDE_CLOSED=true skills/project-pulse/scripts/pulse.sh holon-run/holon
Environment Variables
PULSE_REPO: Optional repo override (owner/repo).PULSE_INCLUDE_CLOSED:true|false(defaultfalse).PULSE_MAX_ISSUES: max fetched issues (default500).PULSE_MAX_PRS: max fetched PRs (default500).PULSE_STALE_DAYS: stale threshold days (default14).PULSE_MAX_AGE_MINUTES: cache freshness threshold in minutes (default10).PULSE_FORCE_REFRESH:true|false, bypass cache and force GitHub sync (defaultfalse).PULSE_BASE_DIR: base directory for repository-local pulse data (default$HOME/.holon/project-pulse/<owner>/<repo>).PULSE_OUT_DIR: analysis output directory (default${PULSE_BASE_DIR}).PULSE_STATE_DIR: local cache/cursor directory (default${PULSE_BASE_DIR}).PULSE_SPLIT_ISSUES:true|false, store issues as one-file-per-issue (defaulttrue).PULSE_KEEP_RAW_ISSUES:true|false, also keep aggregatedissues.json(defaultfalse).PULSE_SPLIT_PRS:true|false, store PRs as one-file-per-PR (defaulttrue).PULSE_KEEP_RAW_PRS:true|false, also keep aggregatedprs.json(defaultfalse).
Output Contract
${PULSE_OUT_DIR}/issues/: per-issue snapshots (<number>.json) whenPULSE_SPLIT_ISSUES=true.${PULSE_OUT_DIR}/issues-index.json: compact index for fast scan whenPULSE_SPLIT_ISSUES=true.${PULSE_OUT_DIR}/issues.json: aggregated snapshot whenPULSE_SPLIT_ISSUES=falseorPULSE_KEEP_RAW_ISSUES=true.${PULSE_OUT_DIR}/prs/: per-PR snapshots (<number>.json) whenPULSE_SPLIT_PRS=true.${PULSE_OUT_DIR}/prs-index.json: compact index for fast scan whenPULSE_SPLIT_PRS=true.${PULSE_OUT_DIR}/prs.json: aggregated snapshot whenPULSE_SPLIT_PRS=falseorPULSE_KEEP_RAW_PRS=true.${PULSE_OUT_DIR}/report.json: machine-readable PM summary.${PULSE_OUT_DIR}/report.md: human-readable PM summary.${PULSE_STATE_DIR}/sync-state.json: latest cursor and sync metadata.
report.json includes next_actions for direct controller consumption.
Schema details: see references/report-schema.md.
Planning usage: see references/planning-playbook.md.
Notes
- Keep write actions (label/comment edits) outside this script by default.
- This skill is analysis-first and safe by default.