pm-claude-skills 45.0.0 โ 47.0.0
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/README.md +26 -13
- package/bin/brief.mjs +89 -0
- package/bin/cli.mjs +20 -1
- package/bin/init.mjs +1 -1
- package/bin/install.mjs +1 -1
- package/bin/lib/scheduler.mjs +61 -0
- package/bin/nightwatch.mjs +102 -0
- package/bin/subscribe.mjs +76 -0
- package/commands/adopt-ai-properly.md +1 -1
- package/commands/brain.md +1 -1
- package/commands/close-the-quarter.md +1 -1
- package/commands/exec-summary.md +1 -1
- package/commands/firm.md +1 -1
- package/commands/grow-a-product.md +1 -1
- package/commands/health-scorecard.md +1 -1
- package/commands/land-a-job.md +1 -1
- package/commands/launch-a-product.md +1 -1
- package/commands/launch-an-ai-feature.md +1 -1
- package/commands/prd.md +1 -1
- package/commands/red-team.md +1 -1
- package/commands/repurpose.md +1 -1
- package/commands/rescue-an-account.md +1 -1
- package/commands/retro.md +1 -1
- package/commands/rice.md +1 -1
- package/commands/run-discovery.md +1 -1
- package/commands/setup-context.md +1 -1
- package/commands/setup-pm-skills.md +1 -1
- package/commands/ship-a-feature.md +1 -1
- package/commands/ship-an-mcp-server.md +1 -1
- package/commands/sprint-plan.md +1 -1
- package/exports/README.md +1 -1
- package/exports/aider/README.md +13 -1
- package/exports/aider/pm-advanced/skill-fusion/skill-fusion.md +41 -0
- package/exports/aider/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/aider/pm-business/job-application/job-application.md +4 -0
- package/exports/aider/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +42 -0
- package/exports/aider/pm-calculators/support-staffing-model/support-staffing-model.md +42 -0
- package/exports/aider/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +40 -0
- package/exports/aider/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/aider/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/aider/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/aider/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/aider/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/aider/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/aider/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/aider/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/aider/pm-lifeadmin/eulogy-writer/eulogy-writer.md +41 -0
- package/exports/aider/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +39 -0
- package/exports/aider/pm-lifeadmin/wedding-speech/wedding-speech.md +40 -0
- package/exports/aider/pm-people/performance-review/performance-review.md +4 -0
- package/exports/aider/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/aider/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/aider/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/aider/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/aider/pm-warroom/assumption-bounty/assumption-bounty.md +40 -0
- package/exports/aider/pm-warroom/decision-autopsy/decision-autopsy.md +40 -0
- package/exports/aider/pm-warroom/devils-twin/devils-twin.md +38 -0
- package/exports/aider/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +45 -0
- package/exports/aider/pm-warroom/premortem-assassin/premortem-assassin.md +49 -0
- package/exports/chatgpt/README.md +13 -1
- package/exports/chatgpt/pm-advanced/skill-fusion/SYSTEM_PROMPT.md +41 -0
- package/exports/chatgpt/pm-business/board-deck-narrative/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-business/job-application/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-calculators/schedule-monte-carlo/SYSTEM_PROMPT.md +42 -0
- package/exports/chatgpt/pm-calculators/support-staffing-model/SYSTEM_PROMPT.md +42 -0
- package/exports/chatgpt/pm-calculators/tornado-sensitivity/SYSTEM_PROMPT.md +40 -0
- package/exports/chatgpt/pm-copy/cold-email/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-cross/brief-builder/SYSTEM_PROMPT.md +6 -0
- package/exports/chatgpt/pm-data/cohort-analysis/SYSTEM_PROMPT.md +153 -100
- package/exports/chatgpt/pm-data/sql-query-explainer/SYSTEM_PROMPT.md +15 -0
- package/exports/chatgpt/pm-engineering/regex-builder/SYSTEM_PROMPT.md +6 -0
- package/exports/chatgpt/pm-engineering/skill-security-auditor/SYSTEM_PROMPT.md +1 -1
- package/exports/chatgpt/pm-hr/employee-engagement-survey/SYSTEM_PROMPT.md +5 -0
- package/exports/chatgpt/pm-jobsearch/interview-prep/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-lifeadmin/eulogy-writer/SYSTEM_PROMPT.md +41 -0
- package/exports/chatgpt/pm-lifeadmin/fine-appeal-letter/SYSTEM_PROMPT.md +39 -0
- package/exports/chatgpt/pm-lifeadmin/wedding-speech/SYSTEM_PROMPT.md +40 -0
- package/exports/chatgpt/pm-people/performance-review/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-personal/cover-letter/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-personal/one-pager/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-planning/pricing-strategy/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-pmm/win-loss-analysis/SYSTEM_PROMPT.md +4 -0
- package/exports/chatgpt/pm-warroom/assumption-bounty/SYSTEM_PROMPT.md +40 -0
- package/exports/chatgpt/pm-warroom/decision-autopsy/SYSTEM_PROMPT.md +40 -0
- package/exports/chatgpt/pm-warroom/devils-twin/SYSTEM_PROMPT.md +38 -0
- package/exports/chatgpt/pm-warroom/metric-gaslighting-detector/SYSTEM_PROMPT.md +45 -0
- package/exports/chatgpt/pm-warroom/premortem-assassin/SYSTEM_PROMPT.md +49 -0
- package/exports/cline/README.md +13 -1
- package/exports/cline/pm-advanced/skill-fusion/skill-fusion.md +41 -0
- package/exports/cline/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/cline/pm-business/job-application/job-application.md +4 -0
- package/exports/cline/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +42 -0
- package/exports/cline/pm-calculators/support-staffing-model/support-staffing-model.md +42 -0
- package/exports/cline/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +40 -0
- package/exports/cline/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/cline/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/cline/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/cline/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/cline/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/cline/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/cline/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/cline/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/cline/pm-lifeadmin/eulogy-writer/eulogy-writer.md +41 -0
- package/exports/cline/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +39 -0
- package/exports/cline/pm-lifeadmin/wedding-speech/wedding-speech.md +40 -0
- package/exports/cline/pm-people/performance-review/performance-review.md +4 -0
- package/exports/cline/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/cline/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/cline/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/cline/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/cline/pm-warroom/assumption-bounty/assumption-bounty.md +40 -0
- package/exports/cline/pm-warroom/decision-autopsy/decision-autopsy.md +40 -0
- package/exports/cline/pm-warroom/devils-twin/devils-twin.md +38 -0
- package/exports/cline/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +45 -0
- package/exports/cline/pm-warroom/premortem-assassin/premortem-assassin.md +49 -0
- package/exports/continue/README.md +13 -1
- package/exports/continue/pm-advanced/skill-fusion/skill-fusion.md +46 -0
- package/exports/continue/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/continue/pm-business/job-application/job-application.md +4 -0
- package/exports/continue/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +47 -0
- package/exports/continue/pm-calculators/support-staffing-model/support-staffing-model.md +47 -0
- package/exports/continue/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +45 -0
- package/exports/continue/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/continue/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/continue/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/continue/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/continue/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/continue/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/continue/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/continue/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/continue/pm-lifeadmin/eulogy-writer/eulogy-writer.md +46 -0
- package/exports/continue/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +44 -0
- package/exports/continue/pm-lifeadmin/wedding-speech/wedding-speech.md +45 -0
- package/exports/continue/pm-people/performance-review/performance-review.md +4 -0
- package/exports/continue/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/continue/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/continue/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/continue/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/continue/pm-warroom/assumption-bounty/assumption-bounty.md +45 -0
- package/exports/continue/pm-warroom/decision-autopsy/decision-autopsy.md +45 -0
- package/exports/continue/pm-warroom/devils-twin/devils-twin.md +43 -0
- package/exports/continue/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +50 -0
- package/exports/continue/pm-warroom/premortem-assassin/premortem-assassin.md +54 -0
- package/exports/cursor/README.md +13 -1
- package/exports/cursor/pm-advanced/skill-fusion/skill-fusion.mdc +47 -0
- package/exports/cursor/pm-business/board-deck-narrative/board-deck-narrative.mdc +4 -0
- package/exports/cursor/pm-business/job-application/job-application.mdc +4 -0
- package/exports/cursor/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.mdc +48 -0
- package/exports/cursor/pm-calculators/support-staffing-model/support-staffing-model.mdc +48 -0
- package/exports/cursor/pm-calculators/tornado-sensitivity/tornado-sensitivity.mdc +46 -0
- package/exports/cursor/pm-copy/cold-email/cold-email.mdc +4 -0
- package/exports/cursor/pm-cross/brief-builder/brief-builder.mdc +6 -0
- package/exports/cursor/pm-data/cohort-analysis/cohort-analysis.mdc +153 -100
- package/exports/cursor/pm-data/sql-query-explainer/sql-query-explainer.mdc +15 -0
- package/exports/cursor/pm-engineering/regex-builder/regex-builder.mdc +6 -0
- package/exports/cursor/pm-engineering/skill-security-auditor/skill-security-auditor.mdc +1 -1
- package/exports/cursor/pm-hr/employee-engagement-survey/employee-engagement-survey.mdc +5 -0
- package/exports/cursor/pm-jobsearch/interview-prep/interview-prep.mdc +4 -0
- package/exports/cursor/pm-lifeadmin/eulogy-writer/eulogy-writer.mdc +47 -0
- package/exports/cursor/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.mdc +45 -0
- package/exports/cursor/pm-lifeadmin/wedding-speech/wedding-speech.mdc +46 -0
- package/exports/cursor/pm-people/performance-review/performance-review.mdc +4 -0
- package/exports/cursor/pm-personal/cover-letter/cover-letter.mdc +4 -0
- package/exports/cursor/pm-personal/one-pager/one-pager.mdc +4 -0
- package/exports/cursor/pm-planning/pricing-strategy/pricing-strategy.mdc +4 -0
- package/exports/cursor/pm-pmm/win-loss-analysis/win-loss-analysis.mdc +4 -0
- package/exports/cursor/pm-warroom/assumption-bounty/assumption-bounty.mdc +46 -0
- package/exports/cursor/pm-warroom/decision-autopsy/decision-autopsy.mdc +46 -0
- package/exports/cursor/pm-warroom/devils-twin/devils-twin.mdc +44 -0
- package/exports/cursor/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.mdc +51 -0
- package/exports/cursor/pm-warroom/premortem-assassin/premortem-assassin.mdc +55 -0
- package/exports/gemini/README.md +13 -1
- package/exports/gemini/pm-advanced/skill-fusion/GEM_INSTRUCTIONS.md +45 -0
- package/exports/gemini/pm-business/board-deck-narrative/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-business/job-application/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-calculators/schedule-monte-carlo/GEM_INSTRUCTIONS.md +46 -0
- package/exports/gemini/pm-calculators/support-staffing-model/GEM_INSTRUCTIONS.md +46 -0
- package/exports/gemini/pm-calculators/tornado-sensitivity/GEM_INSTRUCTIONS.md +44 -0
- package/exports/gemini/pm-copy/cold-email/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-cross/brief-builder/GEM_INSTRUCTIONS.md +6 -0
- package/exports/gemini/pm-data/cohort-analysis/GEM_INSTRUCTIONS.md +153 -100
- package/exports/gemini/pm-data/sql-query-explainer/GEM_INSTRUCTIONS.md +15 -0
- package/exports/gemini/pm-engineering/regex-builder/GEM_INSTRUCTIONS.md +6 -0
- package/exports/gemini/pm-engineering/skill-security-auditor/GEM_INSTRUCTIONS.md +1 -1
- package/exports/gemini/pm-hr/employee-engagement-survey/GEM_INSTRUCTIONS.md +5 -0
- package/exports/gemini/pm-jobsearch/interview-prep/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-lifeadmin/eulogy-writer/GEM_INSTRUCTIONS.md +45 -0
- package/exports/gemini/pm-lifeadmin/fine-appeal-letter/GEM_INSTRUCTIONS.md +43 -0
- package/exports/gemini/pm-lifeadmin/wedding-speech/GEM_INSTRUCTIONS.md +44 -0
- package/exports/gemini/pm-people/performance-review/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-personal/cover-letter/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-personal/one-pager/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-planning/pricing-strategy/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-pmm/win-loss-analysis/GEM_INSTRUCTIONS.md +4 -0
- package/exports/gemini/pm-warroom/assumption-bounty/GEM_INSTRUCTIONS.md +44 -0
- package/exports/gemini/pm-warroom/decision-autopsy/GEM_INSTRUCTIONS.md +44 -0
- package/exports/gemini/pm-warroom/devils-twin/GEM_INSTRUCTIONS.md +42 -0
- package/exports/gemini/pm-warroom/metric-gaslighting-detector/GEM_INSTRUCTIONS.md +49 -0
- package/exports/gemini/pm-warroom/premortem-assassin/GEM_INSTRUCTIONS.md +53 -0
- package/exports/kilocode/README.md +13 -1
- package/exports/kilocode/pm-advanced/skill-fusion/skill-fusion.md +41 -0
- package/exports/kilocode/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/kilocode/pm-business/job-application/job-application.md +4 -0
- package/exports/kilocode/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +42 -0
- package/exports/kilocode/pm-calculators/support-staffing-model/support-staffing-model.md +42 -0
- package/exports/kilocode/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +40 -0
- package/exports/kilocode/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/kilocode/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/kilocode/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/kilocode/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/kilocode/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/kilocode/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/kilocode/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/kilocode/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/kilocode/pm-lifeadmin/eulogy-writer/eulogy-writer.md +41 -0
- package/exports/kilocode/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +39 -0
- package/exports/kilocode/pm-lifeadmin/wedding-speech/wedding-speech.md +40 -0
- package/exports/kilocode/pm-people/performance-review/performance-review.md +4 -0
- package/exports/kilocode/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/kilocode/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/kilocode/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/kilocode/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/kilocode/pm-warroom/assumption-bounty/assumption-bounty.md +40 -0
- package/exports/kilocode/pm-warroom/decision-autopsy/decision-autopsy.md +40 -0
- package/exports/kilocode/pm-warroom/devils-twin/devils-twin.md +38 -0
- package/exports/kilocode/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +45 -0
- package/exports/kilocode/pm-warroom/premortem-assassin/premortem-assassin.md +49 -0
- package/exports/obsidian/README.md +13 -1
- package/exports/obsidian/pm-advanced/skill-fusion/skill-fusion.md +56 -0
- package/exports/obsidian/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/obsidian/pm-business/job-application/job-application.md +4 -0
- package/exports/obsidian/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +57 -0
- package/exports/obsidian/pm-calculators/support-staffing-model/support-staffing-model.md +57 -0
- package/exports/obsidian/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +55 -0
- package/exports/obsidian/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/obsidian/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/obsidian/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/obsidian/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/obsidian/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/obsidian/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/obsidian/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/obsidian/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/obsidian/pm-lifeadmin/eulogy-writer/eulogy-writer.md +56 -0
- package/exports/obsidian/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +54 -0
- package/exports/obsidian/pm-lifeadmin/wedding-speech/wedding-speech.md +55 -0
- package/exports/obsidian/pm-people/performance-review/performance-review.md +4 -0
- package/exports/obsidian/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/obsidian/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/obsidian/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/obsidian/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/obsidian/pm-warroom/assumption-bounty/assumption-bounty.md +55 -0
- package/exports/obsidian/pm-warroom/decision-autopsy/decision-autopsy.md +55 -0
- package/exports/obsidian/pm-warroom/devils-twin/devils-twin.md +53 -0
- package/exports/obsidian/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +60 -0
- package/exports/obsidian/pm-warroom/premortem-assassin/premortem-assassin.md +64 -0
- package/exports/roo/README.md +13 -1
- package/exports/roo/pm-advanced/skill-fusion/skill-fusion.md +41 -0
- package/exports/roo/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/roo/pm-business/job-application/job-application.md +4 -0
- package/exports/roo/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +42 -0
- package/exports/roo/pm-calculators/support-staffing-model/support-staffing-model.md +42 -0
- package/exports/roo/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +40 -0
- package/exports/roo/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/roo/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/roo/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/roo/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/roo/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/roo/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/roo/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/roo/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/roo/pm-lifeadmin/eulogy-writer/eulogy-writer.md +41 -0
- package/exports/roo/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +39 -0
- package/exports/roo/pm-lifeadmin/wedding-speech/wedding-speech.md +40 -0
- package/exports/roo/pm-people/performance-review/performance-review.md +4 -0
- package/exports/roo/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/roo/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/roo/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/roo/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/roo/pm-warroom/assumption-bounty/assumption-bounty.md +40 -0
- package/exports/roo/pm-warroom/decision-autopsy/decision-autopsy.md +40 -0
- package/exports/roo/pm-warroom/devils-twin/devils-twin.md +38 -0
- package/exports/roo/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +45 -0
- package/exports/roo/pm-warroom/premortem-assassin/premortem-assassin.md +49 -0
- package/exports/windsurf/README.md +13 -1
- package/exports/windsurf/pm-advanced/skill-fusion/skill-fusion.md +46 -0
- package/exports/windsurf/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/windsurf/pm-business/job-application/job-application.md +4 -0
- package/exports/windsurf/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +47 -0
- package/exports/windsurf/pm-calculators/support-staffing-model/support-staffing-model.md +47 -0
- package/exports/windsurf/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +45 -0
- package/exports/windsurf/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/windsurf/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/windsurf/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/windsurf/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/windsurf/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/windsurf/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/windsurf/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/windsurf/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/windsurf/pm-lifeadmin/eulogy-writer/eulogy-writer.md +46 -0
- package/exports/windsurf/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +44 -0
- package/exports/windsurf/pm-lifeadmin/wedding-speech/wedding-speech.md +45 -0
- package/exports/windsurf/pm-people/performance-review/performance-review.md +4 -0
- package/exports/windsurf/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/windsurf/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/windsurf/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/windsurf/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/windsurf/pm-warroom/assumption-bounty/assumption-bounty.md +45 -0
- package/exports/windsurf/pm-warroom/decision-autopsy/decision-autopsy.md +45 -0
- package/exports/windsurf/pm-warroom/devils-twin/devils-twin.md +43 -0
- package/exports/windsurf/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +50 -0
- package/exports/windsurf/pm-warroom/premortem-assassin/premortem-assassin.md +54 -0
- package/exports/zed/README.md +13 -1
- package/exports/zed/pm-advanced/skill-fusion/skill-fusion.md +41 -0
- package/exports/zed/pm-business/board-deck-narrative/board-deck-narrative.md +4 -0
- package/exports/zed/pm-business/job-application/job-application.md +4 -0
- package/exports/zed/pm-calculators/schedule-monte-carlo/schedule-monte-carlo.md +42 -0
- package/exports/zed/pm-calculators/support-staffing-model/support-staffing-model.md +42 -0
- package/exports/zed/pm-calculators/tornado-sensitivity/tornado-sensitivity.md +40 -0
- package/exports/zed/pm-copy/cold-email/cold-email.md +4 -0
- package/exports/zed/pm-cross/brief-builder/brief-builder.md +6 -0
- package/exports/zed/pm-data/cohort-analysis/cohort-analysis.md +153 -100
- package/exports/zed/pm-data/sql-query-explainer/sql-query-explainer.md +15 -0
- package/exports/zed/pm-engineering/regex-builder/regex-builder.md +6 -0
- package/exports/zed/pm-engineering/skill-security-auditor/skill-security-auditor.md +1 -1
- package/exports/zed/pm-hr/employee-engagement-survey/employee-engagement-survey.md +5 -0
- package/exports/zed/pm-jobsearch/interview-prep/interview-prep.md +4 -0
- package/exports/zed/pm-lifeadmin/eulogy-writer/eulogy-writer.md +41 -0
- package/exports/zed/pm-lifeadmin/fine-appeal-letter/fine-appeal-letter.md +39 -0
- package/exports/zed/pm-lifeadmin/wedding-speech/wedding-speech.md +40 -0
- package/exports/zed/pm-people/performance-review/performance-review.md +4 -0
- package/exports/zed/pm-personal/cover-letter/cover-letter.md +4 -0
- package/exports/zed/pm-personal/one-pager/one-pager.md +4 -0
- package/exports/zed/pm-planning/pricing-strategy/pricing-strategy.md +4 -0
- package/exports/zed/pm-pmm/win-loss-analysis/win-loss-analysis.md +4 -0
- package/exports/zed/pm-warroom/assumption-bounty/assumption-bounty.md +40 -0
- package/exports/zed/pm-warroom/decision-autopsy/decision-autopsy.md +40 -0
- package/exports/zed/pm-warroom/devils-twin/devils-twin.md +38 -0
- package/exports/zed/pm-warroom/metric-gaslighting-detector/metric-gaslighting-detector.md +45 -0
- package/exports/zed/pm-warroom/premortem-assassin/premortem-assassin.md +49 -0
- package/package.json +7 -2
- package/skills/assumption-bounty/SKILL.md +45 -0
- package/skills/board-deck-narrative/SKILL.md +4 -0
- package/skills/board-deck-narrative/references/what-boards-actually-read.md +19 -0
- package/skills/brief-builder/SKILL.md +6 -0
- package/skills/cohort-analysis/SKILL.md +153 -100
- package/skills/cold-email/SKILL.md +4 -0
- package/skills/cold-email/references/reply-rate-calibration.md +21 -0
- package/skills/cover-letter/SKILL.md +4 -0
- package/skills/cover-letter/templates/cover-letter.md +22 -0
- package/skills/decision-autopsy/SKILL.md +45 -0
- package/skills/devils-twin/SKILL.md +43 -0
- package/skills/employee-engagement-survey/SKILL.md +5 -0
- package/skills/eulogy-writer/SKILL.md +46 -0
- package/skills/fine-appeal-letter/SKILL.md +44 -0
- package/skills/interview-prep/SKILL.md +4 -0
- package/skills/interview-prep/references/story-matrix.md +25 -0
- package/skills/job-application/SKILL.md +4 -0
- package/skills/job-application/references/six-second-scan.md +21 -0
- package/skills/metric-gaslighting-detector/SKILL.md +50 -0
- package/skills/one-pager/SKILL.md +4 -0
- package/skills/one-pager/templates/one-pager.md +31 -0
- package/skills/performance-review/SKILL.md +4 -0
- package/skills/performance-review/references/evidence-not-adjectives.md +22 -0
- package/skills/premortem-assassin/SKILL.md +54 -0
- package/skills/pricing-strategy/SKILL.md +4 -0
- package/skills/pricing-strategy/references/model-selection.md +20 -0
- package/skills/regex-builder/SKILL.md +6 -0
- package/skills/schedule-monte-carlo/SKILL.md +47 -0
- package/skills/schedule-monte-carlo/scripts/schedule_sim.py +153 -0
- package/skills/skill-fusion/SKILL.md +46 -0
- package/skills/skill-security-auditor/SKILL.md +1 -1
- package/skills/slide-deck/scripts/pptx_tool.py +3 -2
- package/skills/sql-query-explainer/SKILL.md +15 -0
- package/skills/support-staffing-model/SKILL.md +47 -0
- package/skills/support-staffing-model/scripts/erlang_staffing.py +144 -0
- package/skills/tornado-sensitivity/SKILL.md +45 -0
- package/skills/tornado-sensitivity/scripts/tornado.py +132 -0
- package/skills/wedding-speech/SKILL.md +45 -0
- package/skills/win-loss-analysis/SKILL.md +4 -0
- package/skills/win-loss-analysis/references/buyer-interview-craft.md +22 -0
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# ๐ง PM Skills โ
|
|
1
|
+
# ๐ง PM Skills โ 466 Professional Agent Skills for Claude, ChatGPT, Gemini, Cursor, Codex & Hermes
|
|
2
2
|
|
|
3
3
|
[](#-quick-install-2-minutes)
|
|
4
4
|
[](https://github.com/mohitagw15856/pm-claude-skills/stargazers)
|
|
@@ -9,8 +9,13 @@
|
|
|
9
9
|
[](https://github.com/mohitagw15856/pm-claude-skills#-use-it-anywhere--the-ai-ecosystem)
|
|
10
10
|
[](mcp-remote/)
|
|
11
11
|
[](https://smithery.ai/servers/mohit15856/pm-skills)
|
|
12
|
-
[](https://github.com/mohitagw15856/pm-claude-skills)
|
|
13
13
|
[](https://mohitagw15856.github.io/pm-claude-skills/)
|
|
14
|
+
[](https://github.com/sponsors/mohitagw15856)
|
|
15
|
+
|
|
16
|
+
> **Big repo?** It's a monorepo on purpose โ but you probably need one folder. **[REPO-MAP.md](REPO-MAP.md)** tells you which, and the skills-only clone is 10 seconds: `git clone --filter=blob:none --sparse <url> && git sparse-checkout set skills`
|
|
17
|
+
|
|
18
|
+
> ๐ **The free runs are sponsor-funded.** Every sponsor dollar visibly raises the daily cap on the counter above โ and sponsors get [naming rights, not influence](docs/SPONSORSHIP.md): your name in this README, your logo on the playground, or **a Boardroom bench carrying your company's name**. โ [Become a sponsor](https://github.com/sponsors/mohitagw15856)
|
|
14
19
|
[](https://mohitagw15856.github.io/pm-claude-skills/leaderboard.html)
|
|
15
20
|
[](agents/)
|
|
16
21
|
[](commands/)
|
|
@@ -26,7 +31,7 @@
|
|
|
26
31
|
|
|
27
32
|
<p align="center">
|
|
28
33
|
<a href="https://mohitagw15856.github.io/pm-claude-skills/">
|
|
29
|
-
<img src="https://readme-typing-svg.demolab.com?font=Inter&weight=600&size=24&pause=900&color=D97757¢er=true&vCenter=true&width=720&lines=
|
|
34
|
+
<img src="https://readme-typing-svg.demolab.com?font=Inter&weight=600&size=24&pause=900&color=D97757¢er=true&vCenter=true&width=720&lines=466+pro+AI+skills;PRDs%2C+roadmaps%2C+launches+%E2%80%94+done+right;Run+any+one+free+in+your+browser" alt="PM Skills" />
|
|
30
35
|
</a>
|
|
31
36
|
</p>
|
|
32
37
|
|
|
@@ -75,11 +80,11 @@
|
|
|
75
80
|
</details>
|
|
76
81
|
|
|
77
82
|
> **PM stands for Professional, not just Product Management.**
|
|
78
|
-
>
|
|
83
|
+
> 466 professional skills + 4 agent templates across 65 bundles covering 25 professions. Built for Claude Code โ and now portable to ChatGPT, Gemini, and Hermes Agent. Built by a PM, used by everyone.
|
|
79
84
|
|
|
80
85
|
A community-built library of professional skills for every field โ product management, engineering, customer success, marketing, social media, writers, design, legal, finance, HR, sales, operations, research, and more. Each skill is a structured `SKILL.md` file that teaches an AI assistant how to produce professional-grade outputs for your workflows. Skills run natively in **Claude Code** and **Hermes Agent** (same open `SKILL.md` standard), and ship as ready-to-paste exports for **ChatGPT** and **Gemini** โ see [Works With](#-works-with--cross-tool-compatibility).
|
|
81
86
|
|
|
82
|
-
**๐
|
|
87
|
+
**๐ v47.0.0 โ the off-web release:** the library now reaches you where you already work โ ๐ฑ **[text or call a skill](integrations/twilio)** (a signature-verified Twilio Worker that answers an SMS with a skill run), โ๏ธ **[email-native operator](integrations/email)** (mail an address, get the skill's reply in-thread), ๐ **[the Operator's Deck](https://mohitagw15856.github.io/pm-claude-skills/deck.html)** (a printable 54-card deck, each with a QR that deep-links the skill), ๐ฎ **[Run the Firm โ the game](https://mohitagw15856.github.io/pm-claude-skills/firm-game.html)** (an 8-quarter AI-company tycoon where every choice is a real skill), ๐งญ **[the Watch-me-work Coach](integrations/coach-extension)** (a local-only browser extension that nudges *"there's a skill for this"* as you write), and ๐ป **[the auto morning-show newsletter](newsletter)** (a zero-cost weekly issue + TTS script, published by a scheduled Action). Plus a **๐ New** nav group and scrollable dropdowns so it's all one click away. **466 skills ยท 66 bundles.** *Earlier โ v46, the arsenal release:* โ๏ธ **[`pm-warroom`](plugins/pm-warroom)** โ the adversarial bundle (Premortem Assassin's twelve failure vectors, Devil's Twin writes the opposition's best memo, Metric Gaslighting Detector's eleven distortions, Decision Autopsy, Assumption Bounty), ๐งฎ **three more skills that do real math** (Erlang-C staffing, schedule Monte Carlo over the task DAG, tornado sensitivity โ CI-pinned exact outputs), ๐ญ shareable singles (eulogy-writer, wedding-speech, fine-appeal-letter, skill-fusion), ๐จ **generative identities on every skill page and playground card** (five banner families seeded from the name, matching colours + monograms, โ links), ๐ฏ **466/466 SkillSpec L3 โ CI-enforced**, ๐งช the 76-assertion scripts harness, ๐ฑ the **PWA** (no-API core offline), ๐ [public vitals](https://mohitagw15856.github.io/pm-claude-skills/status.html) + self-operating crons, ๐บ [REPO-MAP](REPO-MAP.md). **466 skills ยท 66 bundles.** *Earlier โ v45, the spectacle release:* Duels, the Charter, Galaxy 3D, the collapsing Tower of Claims, the Stage, holo cards & Skill City. *Earlier โ v44, the legendary release:* Campaign mode, the Professional Work Handbook (2,297-rule Anti-Pattern Almanac), the Reckoning, the ecosystem package manager, zero-key MCP sampling, pm-skills-tools, the SkillSpec badge & the census. *Earlier โ v43, the local-first & learning wave:* the ๐ workspace bridge, Boardroom replay links & bench packs, ๐ค The Panel, ๐ The Academy, ๐ Wrapped, the evolution loop & pm-method. *Earlier โ v42:* depth (`references/` + `templates/`) on all Production-Ready skills, ๐ Theatre voices, Firm calibration & the CI smoke suite. *Earlier โ v41, the modern skills wave:* two new domains โ **๐ค [`pm-agentnative`](plugins/pm-agentnative)** (build for non-human users: [`mcp-server-spec`](skills/mcp-server-spec/SKILL.md), [`agent-readiness-audit`](skills/agent-readiness-audit/SKILL.md), [`agent-era-pricing`](skills/agent-era-pricing/SKILL.md), [`human-in-the-loop-design`](skills/human-in-the-loop-design/SKILL.md), [`voice-agent-design`](skills/voice-agent-design/SKILL.md)) and **๐งโ๐ผ [`pm-aiwork`](plugins/pm-aiwork)** (the questions every manager has this year: [`ai-roi-audit`](skills/ai-roi-audit/SKILL.md), [`role-redesign-for-ai`](skills/role-redesign-for-ai/SKILL.md), [`ai-usage-policy`](skills/ai-usage-policy/SKILL.md), [`ai-assisted-performance-review`](skills/ai-assisted-performance-review/SKILL.md), [`ai-content-audit`](skills/ai-content-audit/SKILL.md)) โ plus 5 singles ([`ai-code-review`](skills/ai-code-review/SKILL.md), [`synthetic-user-research`](skills/synthetic-user-research/SKILL.md), [`async-decision-memo`](skills/async-decision-memo/SKILL.md), [`brand-impersonation-response`](skills/brand-impersonation-response/SKILL.md), [`feature-sunset-plan`](skills/feature-sunset-plan/SKILL.md)). Also: ๐ Galaxy shooting stars + a ๐ฒ Warp button, ๐ frameable [certificates](web/export-doc.js) from the arena pages, and ๐ [MCP pairings](connectors/mcp-pairings.md) โ skills that act through your connected servers. *Earlier โ v40: [The Firm](https://mohitagw15856.github.io/pm-claude-skills/firm.html). v39 (three waves):* โก *Superpowers:* [SkillBench](skillbench/) (the professional-work benchmark for models) ยท the [community registry](community/) (npm-for-skills) ยท the [Interview Gauntlet](https://mohitagw15856.github.io/pm-claude-skills/gauntlet.html) ยท [CI recipes](action/examples/) + [ambient hooks](hooks/) ยท Hugging Face [dataset publishing](dataset/) ยท [localization to 8 languages](i18n/). ๐คฏ *Breathtaking:* [living artifacts](https://mohitagw15856.github.io/pm-claude-skills/), [Document X-ray](https://mohitagw15856.github.io/pm-claude-skills/xray.html), [The Gym](https://mohitagw15856.github.io/pm-claude-skills/gym.html), [`pm-vision`](plugins/pm-vision), [`style-fingerprint`](skills/style-fingerprint/SKILL.md), [`evidence-lock`](skills/evidence-lock/SKILL.md). โจ *Revamped:* the playground command bar + Galaxy 2.0 with a guided Sky tour. **466 skills ยท 66 bundles ยท 25 professions.** โ [CHANGELOG](CHANGELOG.md) ยท [all releases](https://github.com/mohitagw15856/pm-claude-skills/releases).
|
|
83
88
|
|
|
84
89
|
### โถ See it in action โ [try the live Skill Playground](https://mohitagw15856.github.io/pm-claude-skills/)
|
|
85
90
|
|
|
@@ -135,7 +140,7 @@ In Claude Code, [`/firm`](commands/firm.md) runs the same session natively โ g
|
|
|
135
140
|
<tr>
|
|
136
141
|
<td width="50%">
|
|
137
142
|
<a href="https://mohitagw15856.github.io/pm-claude-skills/"><img src="web/docs-assets/showcase/cmdbar.png" alt="The command bar โ describe your task in plain words and get matched to the right skill instantly" /></a>
|
|
138
|
-
<b>๐ช <a href="https://mohitagw15856.github.io/pm-claude-skills/">The command bar</a></b> โ don't browse
|
|
143
|
+
<b>๐ช <a href="https://mohitagw15856.github.io/pm-claude-skills/">The command bar</a></b> โ don't browse 466 cards; just say it: <i>"a blameless postmortem for Friday's outage"</i> โ the top three skills, instantly, locally, before you've even entered a key. Enter opens the best match.
|
|
139
144
|
</td>
|
|
140
145
|
<td width="50%">
|
|
141
146
|
<a href="https://mohitagw15856.github.io/pm-claude-skills/galaxy.html"><img src="web/docs-assets/showcase/galaxy.png" alt="Skill Galaxy โ the library as a living star map with a guided sky tour" /></a>
|
|
@@ -229,7 +234,7 @@ Generic AI forgets everything between sessions, so you re-paste context forever
|
|
|
229
234
|
<details>
|
|
230
235
|
<summary>Read more โ</summary>
|
|
231
236
|
|
|
232
|
-
These
|
|
237
|
+
These 466 skills aren't a random catalog โ they cover the **full arc of professional work**, end to end. Wherever you are in the loop, there's a skill for it:
|
|
233
238
|
|
|
234
239
|
```mermaid
|
|
235
240
|
flowchart LR
|
|
@@ -352,7 +357,13 @@ Connect the Firm or the Boardroom to a **real folder on disk** (the ๐ chip, C
|
|
|
352
357
|
|
|
353
358
|
### ๐ The library in 3D
|
|
354
359
|
|
|
355
|
-
|
|
360
|
+
<p align="center">
|
|
361
|
+
<a href="https://mohitagw15856.github.io/pm-claude-skills/tower.html"><img src="web/docs-assets/demo-tower.gif" width="420" alt="The Tower of Claims โ the argument collapses because the conclusion rested on glass" /></a>
|
|
362
|
+
<a href="https://mohitagw15856.github.io/pm-claude-skills/galaxy3d.html"><img src="web/docs-assets/demo-galaxy.gif" width="420" alt="Galaxy 3D โ hyperspace warp between skill constellations" /></a>
|
|
363
|
+
</p>
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
- **[Galaxy 3D](https://mohitagw15856.github.io/pm-claude-skills/galaxy3d.html)** โ 466 skills as a bloom-lit starfield you fly through; **your sky is yours** (stars you've run burn brighter). **[Skill City](https://mohitagw15856.github.io/pm-claude-skills/city.html)** โ the same idea as a dusk skyline: windows light up in buildings you've used.
|
|
356
367
|
- **[The Tower of Claims](https://mohitagw15856.github.io/pm-claude-skills/tower.html)** โ your document as a physics tower: data is steel, assumptions are glass, and the stress test shows the argument stand or **collapse**. Keyless demo built in.
|
|
357
368
|
- **[The Stage](https://mohitagw15856.github.io/pm-claude-skills/stage.html)** โ any Boardroom replay as a cinematic 3D scene: the hologram document cracks as objections land; the verdict seals it gold or shatters it.
|
|
358
369
|
- **โ๏ธ Duels** โ challenge links from the Gym and the Panel: your friend faces the *identical* hidden scenario, side-by-side scorecard at the end. **[The Charter](https://mohitagw15856.github.io/pm-claude-skills/charter.html)** โ the performance-based, cryptographically verifiable certification. **[The Trophy Forge](https://mohitagw15856.github.io/pm-claude-skills/trophy.html)** โ cast it in spinning gold.
|
|
@@ -360,13 +371,13 @@ Connect the Firm or the Boardroom to a **real folder on disk** (the ๐ chip, C
|
|
|
360
371
|
### ๐บ The Campaign, the Book, and the Ledger
|
|
361
372
|
|
|
362
373
|
- **[Your First 90 Days](https://mohitagw15856.github.io/pm-claude-skills/campaign.html)** โ campaign mode: one story across every arena. You join a fictional Series A startup, and your *real* arena scores write the plot โ lose the Gym negotiation and the account churns; get fooled in the Panel and the bad hire haunts Week 10. Replayable, saves locally, certificate at Day 90.
|
|
363
|
-
- **[The Professional Work Handbook](https://mohitagw15856.github.io/pm-claude-skills/handbook.html)** โ the library as a book: 11 chapters of craft (the Production-Ready tier in full) + **the Anti-Pattern Almanac: 2,237 rules of professional judgment** from all
|
|
374
|
+
- **[The Professional Work Handbook](https://mohitagw15856.github.io/pm-claude-skills/handbook.html)** โ the library as a book: 11 chapters of craft (the Production-Ready tier in full) + **the Anti-Pattern Almanac: 2,237 rules of professional judgment** from all 466 skills. Printable ([PDF](web/docs-assets/handbook.pdf)), free, regenerated every release.
|
|
364
375
|
- **[The Reckoning](https://mohitagw15856.github.io/pm-claude-skills/reckoning.html)** โ your prediction ledger: confidences, due dates, resurfacing, and a personal **calibration curve with a Brier score**. Also in the CLI: `npx pm-claude-skills reckoning`. When you say 80%, does it happen 80% of the time? Now you'll know.
|
|
365
376
|
- **๐ The chain of trust** โ security scan โ [sha256 content pinning](community/README.md#-trust--integrity--the-full-chain) in the registry โ install lockfile + `npx pm-claude-skills verify` drift detection โ npm provenance. Verifiable end to end, no trust in us required.
|
|
366
377
|
|
|
367
378
|
### ๐ Infrastructure for the whole ecosystem
|
|
368
379
|
|
|
369
|
-
- **[`pm-skills-tools`](tools-pkg/)** โ all
|
|
380
|
+
- **[`pm-skills-tools`](tools-pkg/)** โ all 466 skills as **agent tools**: OpenAI function schemas, Vercel AI SDK adapters, `pick()`/`search()` runtime. `npm i pm-skills-tools` and your agent wields the library.
|
|
370
381
|
- **[The SkillSpec badge](skillspec/README.md#the-badge)** โ any skills repo can wear its live-graded conformance level: ``.
|
|
371
382
|
- **[The State of Agent Skills](docs/reports/)** โ the census of the public SKILL.md ecosystem (counts, conformance pyramid, security hits), regenerated from GitHub code search. The observatory, not just a participant.
|
|
372
383
|
- **[Every protocol](connectors/mcp-pairings.md#every-protocol-one-library)** โ MCP (with zero-key sampling) ยท A2A ยท AGENTS.md ยท function calling ยท REST.
|
|
@@ -465,7 +476,7 @@ Most skill repos are a folder of prompts. This one is a **system** โ measured,
|
|
|
465
476
|
|
|
466
477
|
| | **PM Skills** | Typical skill repo |
|
|
467
478
|
|---|:---:|:---:|
|
|
468
|
-
| Skills | **
|
|
479
|
+
| Skills | **466**, across 25 professions | a handful โ dozens, usually one domain |
|
|
469
480
|
| Quality | **eval-scored** on a rubric + a public [benchmark](https://mohitagw15856.github.io/pm-claude-skills/benchmark.html) | trust the README |
|
|
470
481
|
| Improves itself | โ
eval โ critique โ rewrite (kept only if it scores higher) | โ |
|
|
471
482
|
| Grounded in frameworks | โ
each cites its source (RICE, JTBD, Pyramid Principleโฆ) | rarely |
|
|
@@ -580,6 +591,8 @@ The same 451 skills reach you through every channel โ pick whatever fits your
|
|
|
580
591
|
| ๐ **Raycast / Alfred** | Search every skill from your launcher, then open, run, or install it โ [`integrations/raycast/`](integrations/raycast/) ยท [`integrations/alfred/`](integrations/alfred/) |
|
|
581
592
|
| ๐ค **Custom GPT / Gemini Gem** | Publish the library as a GPT (live Actions API) or a Gem โ copy-paste setup in [`integrations/custom-gpt/`](integrations/custom-gpt/) ยท [`integrations/gemini-gem/`](integrations/gemini-gem/) |
|
|
582
593
|
| ๐ฌ **Slack / Discord** | A `/pmskill` slash command in your team chat โ one signature-verified Worker for both โ [`integrations/chatops/`](integrations/chatops/) |
|
|
594
|
+
| ๐ฑ **Text a skill (SMS/WhatsApp)** | Text a task to a Twilio number, get the drafted artifact back โ no app, no browser โ [`integrations/twilio/`](integrations/twilio/) |
|
|
595
|
+
| ๐ง **Email operator** | Forward a thread to a routing address; the drafted artifact replies in-thread โ [`integrations/email/`](integrations/email/) |
|
|
583
596
|
| ๐ฅ๏ธ **IDE rules** | Generated exports for **Cursor, Windsurf, Aider, Cline, Continue, Zed, Roo, Kilo Code** โ [`exports/`](exports/) |
|
|
584
597
|
| ๐ค **Agents & answer engines** | [`llms.txt`](https://mohitagw15856.github.io/pm-claude-skills/llms.txt) makes the whole library discoverable & citable |
|
|
585
598
|
|
|
@@ -943,7 +956,7 @@ More templates will follow. If you want to contribute one, see the [template con
|
|
|
943
956
|
<details>
|
|
944
957
|
<summary>Read more โ</summary>
|
|
945
958
|
|
|
946
|
-
**Latest:
|
|
959
|
+
**Latest: v47.0.0 โ the off-web release: text or call a skill (signature-verified Twilio Worker), the email-native operator, the printable Operator's Deck with QR deep-links, Run the Firm tycoon game, the local-only Watch-me-work coach extension, and the auto morning-show newsletter โ plus a ๐ New nav group + scrollable dropdowns (466 skills, 66 bundles)** ยท *v46, the arsenal release:* the pm-warroom adversarial bundle, three more computed skills, the shareable singles, generative identities everywhere, 466/466 L3 CI-enforced, the PWA, public vitals & the self-operating crons ยท *v44:* Campaign mode, the Handbook, the Reckoning, the ecosystem package manager, zero-key MCP sampling, pm-skills-tools, the badge & the census ยท *v43:* the workspace bridge, replay links & bench packs, The Panel, The Academy, Wrapped, the evolution loop & pm-method ยท *v42:* depth on all Production-Ready skills, arena voices, Firm calibration & the web-tests safety net ยท *v41, modern skills:* [`pm-agentnative`](plugins/pm-agentnative) + [`pm-aiwork`](plugins/pm-aiwork) (15 skills for the agent era), Galaxy cosmic events, ๐ certificates & [MCP pairings](connectors/mcp-pairings.md) ยท *v40: [The Firm](https://mohitagw15856.github.io/pm-claude-skills/firm.html) ยท v39, three waves:* [SkillBench](skillbench/), the [community registry](community/), the [Interview Gauntlet](https://mohitagw15856.github.io/pm-claude-skills/gauntlet.html), [living artifacts](https://mohitagw15856.github.io/pm-claude-skills/), [Document X-ray](https://mohitagw15856.github.io/pm-claude-skills/xray.html), [The Gym](https://mohitagw15856.github.io/pm-claude-skills/gym.html), pm-vision, i18n, HF publishing, CI recipes & the Galaxy Sky tour. 466 skills across 66 bundles, 25 professions. Every tagged release has complete notes on the **[Releases page](https://github.com/mohitagw15856/pm-claude-skills/releases)**.
|
|
947
960
|
|
|
948
961
|
Full [Keep a Changelog](https://keepachangelog.com/)-format history โ every release back to the start โ is in **[CHANGELOG.md](CHANGELOG.md)**.
|
|
949
962
|
|
|
@@ -1054,7 +1067,7 @@ Every skill, grouped by profession. **[Browse the full per-skill catalog โ SKI
|
|
|
1054
1067
|
<details>
|
|
1055
1068
|
<summary>Read more โ</summary>
|
|
1056
1069
|
|
|
1057
|
-
Building and maintaining
|
|
1070
|
+
Building and maintaining 466 skills across 66 bundles takes real time โ testing skills against new model releases, building new ones from community requests, writing the article series, and keeping documentation current.
|
|
1058
1071
|
|
|
1059
1072
|
If these skills save you time at work โ or you're a company that wants your logo in front of the PMs, engineers, and operators who use them daily โ **[become a sponsor โ](https://github.com/sponsors/mohitagw15856)** (or [โ buy me a coffee](https://www.buymeacoffee.com/mohit15856)).
|
|
1060
1073
|
|
package/bin/brief.mjs
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// `pm-claude-skills brief` โ the chief-of-staff, on demand. The SessionStart
|
|
2
|
+
// hook's morning brief as a human command: predictions due, the latest arena
|
|
3
|
+
// verdicts, open hypotheses, and (with --stats) the project's public vitals.
|
|
4
|
+
// Pure file reads + two public GETs. No API key, no cost.
|
|
5
|
+
//
|
|
6
|
+
// pm-claude-skills brief # this directory's professional state
|
|
7
|
+
// pm-claude-skills stats # the public vitals (runs served, stars, bench)
|
|
8
|
+
import { readFileSync, readdirSync, existsSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
|
|
11
|
+
const cwd = process.cwd();
|
|
12
|
+
const today = () => new Date().toISOString().slice(0, 10);
|
|
13
|
+
const dim = (s) => `\x1b[2m${s}\x1b[0m`;
|
|
14
|
+
const bold = (s) => `\x1b[1m${s}\x1b[0m`;
|
|
15
|
+
|
|
16
|
+
function predictions() {
|
|
17
|
+
const dir = join(cwd, 'brain', 'predictions');
|
|
18
|
+
if (!existsSync(dir)) return { due: [], open: 0 };
|
|
19
|
+
const due = []; let open = 0;
|
|
20
|
+
for (const f of readdirSync(dir).filter((x) => x.endsWith('.md'))) {
|
|
21
|
+
const t = readFileSync(join(dir, f), 'utf8');
|
|
22
|
+
if (!/^status:\s*pending$/m.test(t)) continue;
|
|
23
|
+
open++;
|
|
24
|
+
const d = (t.match(/^due:\s*(\S+)/m) || [])[1];
|
|
25
|
+
if (d && d <= today()) {
|
|
26
|
+
const line = (t.split(/\n---\n/)[1] || '').trim().split('\n')[0];
|
|
27
|
+
due.push({ due: d, text: line, file: f });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return { due, open };
|
|
31
|
+
}
|
|
32
|
+
function latestIn(dir, skipDirs = true) {
|
|
33
|
+
const p = join(cwd, dir);
|
|
34
|
+
if (!existsSync(p)) return null;
|
|
35
|
+
const files = readdirSync(p).filter((f) => !skipDirs || f.includes('.'));
|
|
36
|
+
if (!files.length) return null;
|
|
37
|
+
return files.sort().pop();
|
|
38
|
+
}
|
|
39
|
+
function hypotheses() {
|
|
40
|
+
for (const c of ['brain/hypotheses.md', 'brain/hypotheses']) {
|
|
41
|
+
const p = join(cwd, c);
|
|
42
|
+
if (!existsSync(p)) continue;
|
|
43
|
+
try {
|
|
44
|
+
const text = c.endsWith('.md') ? readFileSync(p, 'utf8')
|
|
45
|
+
: readdirSync(p).map((f) => readFileSync(join(p, f), 'utf8')).join('\n');
|
|
46
|
+
return text.split('\n').filter((l) => l.trim().startsWith('- ')).slice(0, 5);
|
|
47
|
+
} catch { return []; }
|
|
48
|
+
}
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export async function brief() {
|
|
53
|
+
console.log(bold(`โ๏ธ Chief of Staff โ ${today()}`) + dim(` (${cwd})`) + '\n');
|
|
54
|
+
const { due, open } = predictions();
|
|
55
|
+
if (due.length) {
|
|
56
|
+
console.log(bold('๐ Predictions due โ settle them:'));
|
|
57
|
+
for (const d of due) console.log(` ${d.due} ${d.text} ${dim(d.file)}`);
|
|
58
|
+
console.log(dim(' pm-claude-skills reckoning score <file> hit|miss') + '\n');
|
|
59
|
+
} else if (open) console.log(`โณ ${open} prediction(s) open, none due today.\n`);
|
|
60
|
+
for (const [dir, label] of [['firm-minutes', '๐ข Latest Firm minutes'], ['boardroom', '๐ Latest Boardroom artifact']]) {
|
|
61
|
+
const f = latestIn(dir);
|
|
62
|
+
if (f) console.log(`${label}: ${f}${dim(' โ read before revising what it discusses')}`);
|
|
63
|
+
}
|
|
64
|
+
const hyp = hypotheses();
|
|
65
|
+
if (hyp.length) {
|
|
66
|
+
console.log('\n' + bold('๐งช Open hypotheses') + dim(' ([hunch] stays unsettled until tested):'));
|
|
67
|
+
hyp.forEach((h) => console.log(' ' + h.trim().slice(0, 100)));
|
|
68
|
+
}
|
|
69
|
+
if (!due.length && !open && !latestIn('firm-minutes') && !hyp.length) {
|
|
70
|
+
console.log(dim('Nothing on file here. Scaffold the workspace: pm-claude-skills init'));
|
|
71
|
+
}
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export async function stats() {
|
|
76
|
+
console.log(bold('๐ PM Skills โ public vitals\n'));
|
|
77
|
+
try {
|
|
78
|
+
const h = await (await fetch('https://raw.githubusercontent.com/mohitagw15856/pm-claude-skills/vitals-data/history.json')).json();
|
|
79
|
+
const last = h[h.length - 1] || {}, first = h[0] || {};
|
|
80
|
+
console.log(` ๐ฅ Free runs served: ${bold(String(last.runs ?? 'โ'))} (${h.length} days on the ledger, +${(last.runs ?? 0) - (first.runs ?? 0)} this period)`);
|
|
81
|
+
console.log(` โญ Stars: ${bold(String(last.stars ?? 'โ'))}`);
|
|
82
|
+
} catch { console.log(dim(' vitals ledger unreachable')); }
|
|
83
|
+
try {
|
|
84
|
+
const b = await (await fetch('https://raw.githubusercontent.com/mohitagw15856/pm-claude-skills/main/skillbench/results.json')).json();
|
|
85
|
+
for (const r of (b.runs || [])) console.log(` ๐ SkillBench: ${r.model} โ ${r.score} ${dim('(' + (r.date || '').slice(0, 10) + ')')}`);
|
|
86
|
+
} catch { /* fine */ }
|
|
87
|
+
console.log(dim('\n Live dashboard: https://mohitagw15856.github.io/pm-claude-skills/status.html'));
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
package/bin/cli.mjs
CHANGED
|
@@ -19,7 +19,7 @@ import { homedir } from 'node:os';
|
|
|
19
19
|
import { createRequire } from 'node:module';
|
|
20
20
|
|
|
21
21
|
const PKG_ROOT = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
22
|
-
const STAR = 'โญ Find this useful? Star the repo: https://github.com/mohitagw15856/pm-claude-skills';
|
|
22
|
+
const STAR = 'โญ Find this useful? Star the repo: https://github.com/mohitagw15856/pm-claude-skills\n๐ The free playground runs are sponsor-funded โ fund more: https://github.com/sponsors/mohitagw15856';
|
|
23
23
|
const VERSION = (() => {
|
|
24
24
|
try { return createRequire(import.meta.url)('../package.json').version; } catch { return '0.0.0'; }
|
|
25
25
|
})();
|
|
@@ -252,6 +252,10 @@ Usage:
|
|
|
252
252
|
npx pm-claude-skills council <skill> # author -> cross-vendor critique -> arbiter (2+ provider keys)
|
|
253
253
|
npx pm-claude-skills migrate <dir> # convert a folder of prompts/SOPs into SkillSpec skills
|
|
254
254
|
npx pm-claude-skills init # scaffold the professional workspace here (brain/, context, arena folders)
|
|
255
|
+
npx pm-claude-skills nightwatch # AI staff work this directory while you sleep (install | --once | --dry-run)
|
|
256
|
+
npx pm-claude-skills subscribe # standing skills: scheduled runs that report what CHANGED
|
|
257
|
+
npx pm-claude-skills brief # the chief-of-staff: predictions due, latest verdicts, open hypotheses
|
|
258
|
+
npx pm-claude-skills stats # the project's public vitals (runs served, stars, benchmark)
|
|
255
259
|
npx pm-claude-skills reckoning # your prediction ledger: due calls, hit rate, calibration curve, Brier score
|
|
256
260
|
npx pm-claude-skills doctor # checkup: what's installed, what's stale, what to fix (read-only)
|
|
257
261
|
npx pm-claude-skills list
|
|
@@ -297,6 +301,21 @@ else if (cmd === 'verify') {
|
|
|
297
301
|
try { process.exit(await run(process.argv.slice(3))); }
|
|
298
302
|
catch (e) { console.error(`Error: ${e.message}`); process.exit(1); }
|
|
299
303
|
}
|
|
304
|
+
else if (cmd === 'nightwatch') {
|
|
305
|
+
const { run } = await import('./nightwatch.mjs');
|
|
306
|
+
try { process.exit(await run(process.argv.slice(3))); }
|
|
307
|
+
catch (e) { console.error(`Error: ${e.message}`); process.exit(1); }
|
|
308
|
+
}
|
|
309
|
+
else if (cmd === 'subscribe') {
|
|
310
|
+
const { run } = await import('./subscribe.mjs');
|
|
311
|
+
try { process.exit(await run(process.argv.slice(3))); }
|
|
312
|
+
catch (e) { console.error(`Error: ${e.message}`); process.exit(1); }
|
|
313
|
+
}
|
|
314
|
+
else if (cmd === 'brief' || cmd === 'stats') {
|
|
315
|
+
const m = await import('./brief.mjs');
|
|
316
|
+
try { process.exit(await (cmd === 'brief' ? m.brief() : m.stats())); }
|
|
317
|
+
catch (e) { console.error(`Error: ${e.message}`); process.exit(1); }
|
|
318
|
+
}
|
|
300
319
|
else if (cmd === 'reckoning') {
|
|
301
320
|
const { run } = await import('./reckoning.mjs');
|
|
302
321
|
try { process.exit(await run(process.argv.slice(3))); }
|
package/bin/init.mjs
CHANGED
|
@@ -13,7 +13,7 @@ import { join, dirname } from 'node:path';
|
|
|
13
13
|
import { fileURLToPath } from 'node:url';
|
|
14
14
|
|
|
15
15
|
const PKG_ROOT = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
16
|
-
const STAR = 'โญ Find this useful? Star the repo: https://github.com/mohitagw15856/pm-claude-skills';
|
|
16
|
+
const STAR = 'โญ Find this useful? Star the repo: https://github.com/mohitagw15856/pm-claude-skills\n๐ The free playground runs are sponsor-funded โ fund more: https://github.com/sponsors/mohitagw15856';
|
|
17
17
|
|
|
18
18
|
const CLAUDE_MD_SECTION = `
|
|
19
19
|
## PM Skills โ this project's professional setup
|
package/bin/install.mjs
CHANGED
|
@@ -16,7 +16,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
16
16
|
import { homedir } from 'node:os';
|
|
17
17
|
|
|
18
18
|
const PKG_ROOT = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
19
|
-
const STAR = 'โญ Find this useful? Star the repo: https://github.com/mohitagw15856/pm-claude-skills';
|
|
19
|
+
const STAR = 'โญ Find this useful? Star the repo: https://github.com/mohitagw15856/pm-claude-skills\n๐ The free playground runs are sponsor-funded โ fund more: https://github.com/sponsors/mohitagw15856';
|
|
20
20
|
|
|
21
21
|
const AGENT_DIRS = {
|
|
22
22
|
claude: join(homedir(), '.claude', 'skills'),
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Local job scheduling for the Nightwatch and standing-skill subscriptions.
|
|
2
|
+
// macOS: launchd plists in ~/Library/LaunchAgents; Linux: user crontab lines.
|
|
3
|
+
// Everything is inspectable, labeled, and uninstallable by name.
|
|
4
|
+
import { writeFileSync, existsSync, unlinkSync, readdirSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { homedir, platform } from 'node:os';
|
|
7
|
+
import { execSync } from 'node:child_process';
|
|
8
|
+
|
|
9
|
+
const PREFIX = 'com.pm-skills.';
|
|
10
|
+
|
|
11
|
+
export function install(name, argvArray, { hour = 5, minute = 30, cron = null } = {}) {
|
|
12
|
+
if (platform() === 'darwin') {
|
|
13
|
+
const label = PREFIX + name;
|
|
14
|
+
const plist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
15
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
16
|
+
<plist version="1.0"><dict>
|
|
17
|
+
<key>Label</key><string>${label}</string>
|
|
18
|
+
<key>ProgramArguments</key><array>${argvArray.map((a) => `<string>${a}</string>`).join('')}</array>
|
|
19
|
+
<key>StartCalendarInterval</key><dict><key>Hour</key><integer>${hour}</integer><key>Minute</key><integer>${minute}</integer></dict>
|
|
20
|
+
<key>WorkingDirectory</key><string>${process.cwd()}</string>
|
|
21
|
+
<key>StandardOutPath</key><string>${join(process.cwd(), '.pm-skills', name + '.log')}</string>
|
|
22
|
+
<key>StandardErrorPath</key><string>${join(process.cwd(), '.pm-skills', name + '.log')}</string>
|
|
23
|
+
</dict></plist>`;
|
|
24
|
+
const p = join(homedir(), 'Library', 'LaunchAgents', label + '.plist');
|
|
25
|
+
writeFileSync(p, plist);
|
|
26
|
+
try { execSync(`launchctl unload ${JSON.stringify(p)} 2>/dev/null`); } catch { /* not loaded */ }
|
|
27
|
+
execSync(`launchctl load ${JSON.stringify(p)}`);
|
|
28
|
+
return { kind: 'launchd', path: p, when: `daily ${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}` };
|
|
29
|
+
}
|
|
30
|
+
// Linux: append a labeled crontab line.
|
|
31
|
+
const line = `${cron || `${minute} ${hour} * * *`} cd ${process.cwd()} && ${argvArray.map((a) => JSON.stringify(a)).join(' ')} >> .pm-skills/${name}.log 2>&1 # ${PREFIX}${name}`;
|
|
32
|
+
const current = (() => { try { return execSync('crontab -l').toString(); } catch { return ''; } })();
|
|
33
|
+
const cleaned = current.split('\n').filter((l) => !l.includes(`# ${PREFIX}${name}`)).join('\n').trim();
|
|
34
|
+
execSync('crontab -', { input: cleaned + '\n' + line + '\n' });
|
|
35
|
+
return { kind: 'cron', path: 'crontab', when: cron || `daily ${hour}:${minute}` };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function uninstall(name) {
|
|
39
|
+
if (platform() === 'darwin') {
|
|
40
|
+
const p = join(homedir(), 'Library', 'LaunchAgents', PREFIX + name + '.plist');
|
|
41
|
+
if (!existsSync(p)) return false;
|
|
42
|
+
try { execSync(`launchctl unload ${JSON.stringify(p)}`); } catch { /* fine */ }
|
|
43
|
+
unlinkSync(p);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
const current = (() => { try { return execSync('crontab -l').toString(); } catch { return ''; } })();
|
|
47
|
+
const cleaned = current.split('\n').filter((l) => !l.includes(`# ${PREFIX}${name}`)).join('\n');
|
|
48
|
+
if (cleaned === current) return false;
|
|
49
|
+
execSync('crontab -', { input: cleaned });
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function list() {
|
|
54
|
+
if (platform() === 'darwin') {
|
|
55
|
+
const dir = join(homedir(), 'Library', 'LaunchAgents');
|
|
56
|
+
if (!existsSync(dir)) return [];
|
|
57
|
+
return readdirSync(dir).filter((f) => f.startsWith(PREFIX)).map((f) => f.slice(PREFIX.length).replace(/\.plist$/, ''));
|
|
58
|
+
}
|
|
59
|
+
try { return execSync('crontab -l').toString().split('\n').filter((l) => l.includes('# ' + PREFIX)).map((l) => l.split('# ' + PREFIX)[1]); }
|
|
60
|
+
catch { return []; }
|
|
61
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// `pm-claude-skills nightwatch` โ your AI staff work while you sleep.
|
|
2
|
+
// A scheduled Agent SDK run (YOUR key, YOUR machine, this directory) where the
|
|
3
|
+
// Firm's discipline meets real files: triage the brain, draft what the open
|
|
4
|
+
// hypotheses and due predictions imply, file memos to firm-minutes/, and leave
|
|
5
|
+
// a morning brief of WORK DONE, not work suggested.
|
|
6
|
+
//
|
|
7
|
+
// pm-claude-skills nightwatch --once # run right now, watch it work
|
|
8
|
+
// pm-claude-skills nightwatch --once --dry-run # show the shift plan, no API calls
|
|
9
|
+
// pm-claude-skills nightwatch install [--hour 5 --minute 30] # schedule nightly
|
|
10
|
+
// pm-claude-skills nightwatch uninstall | status
|
|
11
|
+
//
|
|
12
|
+
// Requires: ANTHROPIC_API_KEY in the environment (for scheduled runs, launchd/cron
|
|
13
|
+
// must see it โ the installer checks and tells you). Spend is bounded by
|
|
14
|
+
// --max-turns (default 30) and the model (default Sonnet). All writes stay in
|
|
15
|
+
// this directory: artifacts/, firm-minutes/, brain/.
|
|
16
|
+
import { readFileSync, readdirSync, existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
import { install, uninstall, list } from './lib/scheduler.mjs';
|
|
19
|
+
|
|
20
|
+
const getArg = (argv, n, d) => { const i = argv.indexOf('--' + n); return i >= 0 && argv[i + 1] ? argv[i + 1] : d; };
|
|
21
|
+
const today = () => new Date().toISOString().slice(0, 10);
|
|
22
|
+
|
|
23
|
+
function shiftPlan(cwd) {
|
|
24
|
+
// The night shift's standing orders, grounded in what's actually on file.
|
|
25
|
+
const read = (p) => { try { return readFileSync(join(cwd, p), 'utf8'); } catch { return ''; } };
|
|
26
|
+
const ctx = read('brain/context.md') || read('pm-context.md');
|
|
27
|
+
const duties = [];
|
|
28
|
+
const predDir = join(cwd, 'brain', 'predictions');
|
|
29
|
+
if (existsSync(predDir)) {
|
|
30
|
+
const due = readdirSync(predDir).filter((f) => {
|
|
31
|
+
const t = read('brain/predictions/' + f);
|
|
32
|
+
const d = (t.match(/^due:\s*(\S+)/m) || [])[1];
|
|
33
|
+
return /^status:\s*pending$/m.test(t) && d && d <= today();
|
|
34
|
+
});
|
|
35
|
+
if (due.length) duties.push(`RECKON: ${due.length} prediction(s) are due (${due.join(', ')}). For each: search this directory's files for evidence, then either settle it by editing its status to hit/miss with a one-line justification appended, or write why it cannot be settled from available evidence.`);
|
|
36
|
+
}
|
|
37
|
+
const hyp = read('brain/hypotheses.md');
|
|
38
|
+
const hunches = (hyp.match(/^- \[hunch\].*$/gm) || []).slice(0, 2);
|
|
39
|
+
if (hunches.length) duties.push(`INVESTIGATE: for each open hunch (${hunches.map((h) => '"' + h.slice(0, 60) + '"').join('; ')}), gather whatever evidence exists in this directory's files and append a dated [data]/[external] line to brain/ if anything upgrades or kills it.`);
|
|
40
|
+
duties.push('DRAFT: pick the ONE most useful artifact this workspace obviously needs next (an overdue update, the doc a settled prediction implies, the summary firm-minutes/ has been circling) and draft it properly to artifacts/' + today() + '-<slug>.md using the matching installed skill\'s structure โ its Quality Checks are your acceptance test.');
|
|
41
|
+
duties.push('REPORT: write firm-minutes/nightwatch-' + today() + '.md โ the morning brief: what was DONE (with file paths), what was settled, what needs a human decision (max 3 items), each with your recommendation.');
|
|
42
|
+
return { ctx, duties };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export async function run(argv) {
|
|
46
|
+
const cmd = argv.find((a) => !a.startsWith('--')) || (argv.includes('--once') ? 'once' : 'help');
|
|
47
|
+
const cwd = process.cwd();
|
|
48
|
+
|
|
49
|
+
if (cmd === 'install') {
|
|
50
|
+
if (!process.env.ANTHROPIC_API_KEY) console.error('โ ANTHROPIC_API_KEY is not in this shell โ the scheduled job needs it. Add it to the plist/cron environment or a .env this directory loads.');
|
|
51
|
+
const r = install('nightwatch', [process.execPath, join(new URL('.', import.meta.url).pathname, 'cli.mjs'), 'nightwatch', '--once'],
|
|
52
|
+
{ hour: +getArg(argv, 'hour', 5), minute: +getArg(argv, 'minute', 30) });
|
|
53
|
+
mkdirSync(join(cwd, '.pm-skills'), { recursive: true });
|
|
54
|
+
console.log(`๐ Nightwatch scheduled (${r.kind}, ${r.when}) for ${cwd}\n Logs: .pm-skills/nightwatch.log ยท remove: pm-claude-skills nightwatch uninstall`);
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
if (cmd === 'uninstall') { console.log(uninstall('nightwatch') ? '๐ Nightwatch unscheduled.' : 'Nothing scheduled.'); return 0; }
|
|
58
|
+
if (cmd === 'status') { const l = list(); console.log(l.length ? 'Scheduled: ' + l.join(', ') : 'Nothing scheduled.'); return 0; }
|
|
59
|
+
|
|
60
|
+
if (cmd === 'once' || argv.includes('--once')) {
|
|
61
|
+
const { ctx, duties } = shiftPlan(cwd);
|
|
62
|
+
if (argv.includes('--dry-run')) {
|
|
63
|
+
console.log(`๐ Nightwatch shift plan for ${cwd} (dry run โ no API calls):\n`);
|
|
64
|
+
duties.forEach((d, i) => console.log(` ${i + 1}. ${d.split(':')[0]}: ${d.split(': ').slice(1).join(': ').slice(0, 140)}โฆ\n`));
|
|
65
|
+
console.log(`Context loaded: ${ctx ? 'brain/context.md (' + ctx.length + ' chars)' : 'NONE โ run pm-claude-skills init'}`);
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
if (!process.env.ANTHROPIC_API_KEY) { console.error('ANTHROPIC_API_KEY not set. (--dry-run shows the shift plan for free.)'); return 1; }
|
|
69
|
+
let query;
|
|
70
|
+
try { ({ query } = await import('@anthropic-ai/claude-agent-sdk')); }
|
|
71
|
+
catch { console.error('The Nightwatch needs the Agent SDK: npm install -g @anthropic-ai/claude-agent-sdk (or run from a directory that has it)'); return 1; }
|
|
72
|
+
mkdirSync(join(cwd, 'artifacts'), { recursive: true });
|
|
73
|
+
console.error(`๐ Nightwatch shift starting in ${cwd} โ ${duties.length} standing ordersโฆ`);
|
|
74
|
+
const prompt = `You are the Nightwatch โ the professional staff working this workspace overnight. Complete these standing orders IN ORDER, doing real file work (read, then write), never inventing facts not found in the files:\n\n${duties.map((d, i) => `${i + 1}. ${d}`).join('\n\n')}`;
|
|
75
|
+
const append = `\nSTANDING CONTEXT:\n${(ctx || '(none)').slice(0, 4000)}\n\nHOUSE RULES: honour brain/ provenance tags; artifacts follow installed skill structures where one matches; every claim in the morning brief cites the file it came from; if evidence is insufficient, say so rather than padding.`;
|
|
76
|
+
let cost = 0, turns = 0;
|
|
77
|
+
for await (const message of query({ prompt, options: {
|
|
78
|
+
systemPrompt: { type: 'preset', preset: 'claude_code', append },
|
|
79
|
+
allowedTools: ['Read', 'Write', 'Edit', 'Glob', 'Grep'],
|
|
80
|
+
permissionMode: 'acceptEdits',
|
|
81
|
+
maxTurns: +getArg(argv, 'max-turns', 30),
|
|
82
|
+
model: getArg(argv, 'model', undefined),
|
|
83
|
+
} })) {
|
|
84
|
+
if (message.type === 'result') { cost = message.total_cost_usd ?? 0; turns = message.num_turns; }
|
|
85
|
+
}
|
|
86
|
+
const brief = join(cwd, 'firm-minutes', `nightwatch-${today()}.md`);
|
|
87
|
+
console.error(`๐ Shift complete โ ${turns} turns, $${cost.toFixed(4)}. Morning brief: ${existsSync(brief) ? brief : '(not filed โ check the log)'}`);
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
console.log(`The Nightwatch โ AI staff that work this directory while you sleep.
|
|
92
|
+
|
|
93
|
+
pm-claude-skills nightwatch --once run a shift now
|
|
94
|
+
pm-claude-skills nightwatch --once --dry-run see the shift plan, no API calls
|
|
95
|
+
pm-claude-skills nightwatch install schedule nightly (5:30am default; --hour/--minute)
|
|
96
|
+
pm-claude-skills nightwatch uninstall | status
|
|
97
|
+
|
|
98
|
+
A shift: settle due predictions against file evidence ยท investigate open hunches ยท
|
|
99
|
+
draft the one artifact the workspace needs ยท file the morning brief of work DONE.
|
|
100
|
+
Writes only inside this directory. Your key, bounded turns.`);
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// `pm-claude-skills subscribe` โ skills as standing subscriptions. A skill that
|
|
2
|
+
// runs on a schedule against a living input (a CSV export, a notes file), files
|
|
3
|
+
// dated artifacts into brain/artifacts, and DIFFS against last time: the run's
|
|
4
|
+
// headline is what CHANGED, not what is.
|
|
5
|
+
//
|
|
6
|
+
// pm-claude-skills subscribe churn-analysis --input ./exports/latest.csv --weekly monday
|
|
7
|
+
// pm-claude-skills subscribe run churn-analysis --input ./exports/latest.csv # run one cycle now
|
|
8
|
+
// pm-claude-skills subscribe list | unsubscribe <skill>
|
|
9
|
+
//
|
|
10
|
+
// Scheduled runs need ANTHROPIC_API_KEY visible to launchd/cron. Artifacts:
|
|
11
|
+
// brain/subscriptions/<skill>/<date>.md (+ latest.md symlink-copy + CHANGES.md).
|
|
12
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, copyFileSync } from 'node:fs';
|
|
13
|
+
import { join, dirname } from 'node:path';
|
|
14
|
+
import { fileURLToPath } from 'node:url';
|
|
15
|
+
import { install, uninstall, list } from './lib/scheduler.mjs';
|
|
16
|
+
import { complete, parseSkill } from './lib/anthropic.mjs';
|
|
17
|
+
|
|
18
|
+
const PKG_ROOT = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
19
|
+
const getArg = (argv, n, d) => { const i = argv.indexOf('--' + n); return i >= 0 && argv[i + 1] ? argv[i + 1] : d; };
|
|
20
|
+
const DAYS = { sunday: 0, monday: 1, tuesday: 2, wednesday: 3, thursday: 4, friday: 5, saturday: 6 };
|
|
21
|
+
const today = () => new Date().toISOString().slice(0, 10);
|
|
22
|
+
|
|
23
|
+
async function runCycle(skill, inputPath, model) {
|
|
24
|
+
const file = join(PKG_ROOT, 'skills', skill, 'SKILL.md');
|
|
25
|
+
if (!existsSync(file)) { console.error(`Unknown skill "${skill}".`); return 1; }
|
|
26
|
+
if (!existsSync(inputPath)) { console.error(`Input not found: ${inputPath}`); return 1; }
|
|
27
|
+
const apiKey = process.env.ANTHROPIC_API_KEY;
|
|
28
|
+
if (!apiKey) { console.error('ANTHROPIC_API_KEY not set.'); return 1; }
|
|
29
|
+
const dir = join(process.cwd(), 'brain', 'subscriptions', skill);
|
|
30
|
+
mkdirSync(dir, { recursive: true });
|
|
31
|
+
const prev = existsSync(join(dir, 'latest.md')) ? readFileSync(join(dir, 'latest.md'), 'utf8') : null;
|
|
32
|
+
const { body } = parseSkill(readFileSync(file, 'utf8'));
|
|
33
|
+
const input = readFileSync(inputPath, 'utf8').slice(0, 60000);
|
|
34
|
+
console.error(`โฐ ${skill} โ ${inputPath}${prev ? ' (diffing vs last run)' : ' (first run)'}`);
|
|
35
|
+
const out = await complete({ apiKey, model: model || 'claude-sonnet-4-6', maxTokens: 8192,
|
|
36
|
+
system: body + '\n\n---\nExecute this skill on the input below. This is a RECURRING run.' +
|
|
37
|
+
(prev ? ' The previous run\'s output is provided โ begin your output with a "## What changed since last run" section (3-6 bullets, most decision-relevant first, honest "nothing material" if true), THEN the full artifact.' : ''),
|
|
38
|
+
messages: [{ role: 'user', content: 'INPUT:\n' + input + (prev ? '\n\nPREVIOUS RUN OUTPUT:\n' + prev.slice(0, 20000) : '') }] });
|
|
39
|
+
const dated = join(dir, today() + '.md');
|
|
40
|
+
writeFileSync(dated, out + '\n');
|
|
41
|
+
copyFileSync(dated, join(dir, 'latest.md'));
|
|
42
|
+
const changes = (out.match(/## What changed[\s\S]*?(?=\n## |$)/) || [''])[0];
|
|
43
|
+
if (changes) writeFileSync(join(dir, 'CHANGES.md'), `# ${skill} โ last delta (${today()})\n\n${changes}\n`);
|
|
44
|
+
console.error(`โ
${dated}${changes ? ' ยท delta โ CHANGES.md' : ''}`);
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export async function run(argv) {
|
|
49
|
+
const a0 = argv[0];
|
|
50
|
+
if (a0 === 'list') { const l = list().filter((n) => n.startsWith('sub-')); console.log(l.length ? l.map((x) => ' โฐ ' + x.slice(4)).join('\n') : 'No subscriptions.'); return 0; }
|
|
51
|
+
if (a0 === 'unsubscribe') { console.log(uninstall('sub-' + argv[1]) ? 'โฐ Unsubscribed ' + argv[1] : 'No such subscription.'); return 0; }
|
|
52
|
+
if (a0 === 'run') return runCycle(argv[1], getArg(argv, 'input'), getArg(argv, 'model'));
|
|
53
|
+
|
|
54
|
+
const skill = a0 && !a0.startsWith('--') ? a0 : null;
|
|
55
|
+
const input = getArg(argv, 'input');
|
|
56
|
+
if (!skill || !input) {
|
|
57
|
+
console.log(`Standing skills โ a skill that runs on a schedule and reports what CHANGED.
|
|
58
|
+
|
|
59
|
+
pm-claude-skills subscribe <skill> --input <file> [--weekly monday | --daily] [--hour 6]
|
|
60
|
+
pm-claude-skills subscribe run <skill> --input <file> # one cycle now
|
|
61
|
+
pm-claude-skills subscribe list | unsubscribe <skill>
|
|
62
|
+
|
|
63
|
+
Artifacts land in brain/subscriptions/<skill>/ โ dated runs, latest.md, and
|
|
64
|
+
CHANGES.md (the delta since last run, which is the part worth reading).`);
|
|
65
|
+
return skill ? 0 : 1;
|
|
66
|
+
}
|
|
67
|
+
const weekly = getArg(argv, 'weekly', null);
|
|
68
|
+
const hour = +getArg(argv, 'hour', 6);
|
|
69
|
+
const cron = weekly ? `0 ${hour} * * ${DAYS[weekly.toLowerCase()] ?? 1}` : null;
|
|
70
|
+
const r = install('sub-' + skill,
|
|
71
|
+
[process.execPath, join(dirname(fileURLToPath(import.meta.url)), 'cli.mjs'), 'subscribe', 'run', skill, '--input', input],
|
|
72
|
+
{ hour, minute: 0, cron });
|
|
73
|
+
mkdirSync(join(process.cwd(), '.pm-skills'), { recursive: true });
|
|
74
|
+
console.log(`โฐ Subscribed: ${skill} โ ${input} (${r.kind}, ${weekly ? 'weekly ' + weekly : r.when})\n First cycle now: pm-claude-skills subscribe run ${skill} --input ${input}`);
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Workflow recipe โ the org-side AI adoption arc, policy to proof, by chaining 4 skills.
|
|
3
|
-
argument-hint: [the org: size, industry, what AI tools are in use (officially and not), what's worrying leadership]
|
|
3
|
+
argument-hint: "[the org: size, industry, what AI tools are in use (officially and not), what's worrying leadership]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Run the **Adopt AI Properly** workflow recipe for: $ARGUMENTS
|
package/commands/brain.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Set up or use your Professional Brain โ init, ingest, recall, or review.
|
|
3
|
-
argument-hint: [init | ingest <thing> | recall <query> | review]
|
|
3
|
+
argument-hint: "[init | ingest <thing> | recall <query> | review]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Apply the **professional-brain** skill to: $ARGUMENTS
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Workflow recipe โ turn the quarter's raw numbers into a leadership story and board deck by chaining 4 skills.
|
|
3
|
-
argument-hint: [the quarter's metrics, wins, and misses]
|
|
3
|
+
argument-hint: "[the quarter's metrics, wins, and misses]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Run the **Close the Quarter** workflow recipe for: $ARGUMENTS
|
package/commands/exec-summary.md
CHANGED
package/commands/firm.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Convene your standing AI staff โ memos on every beat, a board session without you, minutes with dissent preserved.
|
|
3
|
-
argument-hint: [optional board agenda โ otherwise the staff pick the sharpest open question]
|
|
3
|
+
argument-hint: "[optional board agenda โ otherwise the staff pick the sharpest open question]"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
You are the **chief of staff** running a session of the user's standing Firm โ a staffed team, not a chatbot. Full concept: the repo's `web/firm.html`; this command is its Claude Code native form, grounded in real files instead of a pasted charter.
|