From 356256956cc5f9c2e085aeab66bbc20e04e91bf1 Mon Sep 17 00:00:00 2001 From: "nlpm-auditor[bot]" Date: Thu, 6 Aug 2026 00:51:23 +0000 Subject: [PATCH] audit: phuryn/pm-skills (92/100, security:CLEAR, progressive, 120 artifacts) --- .../audits/phuryn-pm-skills.findings.jsonl | 226 + auditor/audits/phuryn-pm-skills.md | 332 ++ auditor/findings.jsonl | 226 + auditor/logs/events.jsonl | 4 + auditor/registry/repos.json | 313 +- auditor/reports/phuryn-pm-skills.html | 104 + auditor/reports/phuryn-pm-skills.json | 3944 +++++++++++++++++ 7 files changed, 4994 insertions(+), 155 deletions(-) create mode 100644 auditor/audits/phuryn-pm-skills.findings.jsonl create mode 100644 auditor/audits/phuryn-pm-skills.md create mode 100644 auditor/reports/phuryn-pm-skills.html create mode 100644 auditor/reports/phuryn-pm-skills.json diff --git a/auditor/audits/phuryn-pm-skills.findings.jsonl b/auditor/audits/phuryn-pm-skills.findings.jsonl new file mode 100644 index 000000000..36e9e7563 --- /dev/null +++ b/auditor/audits/phuryn-pm-skills.findings.jsonl @@ -0,0 +1,226 @@ +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-marketing-growth/commands/market-product.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' (Write) but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output to a file but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-marketing-growth/commands/north-star.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' (Write) but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output to a file but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/privacy-policy.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer DOCX export.' but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving/exporting output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/proofread.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs accepting uploaded DOCX/PDF documents but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded documents but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/tailor-resume.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs accepting uploaded resume/JD files and URL fetch but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and fetching a URL but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, WebFetch to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs accepting uploaded PDF/DOCX resume but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading an uploaded resume but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/draft-nda.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer to export as DOCX for signing.' but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving/exporting output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-data-analytics/commands/analyze-cohorts.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Process the data using Python (pandas)' and instructs saving markdown/CSV, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs Python processing and file saves but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Bash, Write, Read to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs reading an uploaded schema (diagram, DDL) but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded schema files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-data-analytics/commands/analyze-test.md","line":null,"severity":"medium","confidence":"high","evidence":"Notes say 'generate the full analysis using Python with scipy.stats' and accept CSV/screenshot upload, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs Python analysis and file/screenshot reading but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Bash, Read to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-go-to-market/commands/plan-launch.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' and accepts PRD/deck upload, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded materials and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-go-to-market/commands/growth-strategy.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' and accepts uploaded metrics data, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded materials and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-go-to-market/commands/battlecard.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Apply the competitive-battlecard skill with web research' and 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Use web research to gather current information' and 'Save as markdown', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-market-research/commands/analyze-feedback.md","line":null,"severity":"medium","confidence":"high","evidence":"body accepts CSV/Excel upload and instructs 'Save as markdown... also save enriched data as CSV', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-market-research/commands/research-users.md","line":null,"severity":"medium","confidence":"high","evidence":"body accepts uploaded research files and instructs 'Save as markdown', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-ai-shipping/commands/derive-tests.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Write the coverage map to documentation/tests.md and the full report to reports/test_plan_{timestamp}.md', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs writing report files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Grep, Glob, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-ai-shipping/commands/document-app.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'produce the applicable documents in documentation/... fan out with parallel subagents', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs writing files and dispatching subagents but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Grep, Glob, Task, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-ai-shipping/commands/ship-check.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Create or refresh CLAUDE.md... run them as parallel subagents', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs writing files and dispatching subagents but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write, Task to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/business-model.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer:', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/pricing.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Using web research:' and 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/market-scan.md","line":null,"severity":"medium","confidence":"high","evidence":"Notes say 'Use web research to ground the analysis in current market data', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/value-proposition.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer:', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/strategy.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/write-prd.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save the PRD as a markdown file to the user's workspace.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/stakeholder-map.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/pre-mortem.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/generate-data.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Execute the script and produce the output file' and 'Save data file and generator script', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs executing a script and writing files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Bash, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/meeting-notes.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/transform-roadmap.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as a markdown file.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/sprint.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown and offer to format for different channels', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/write-stories.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/setup-metrics.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as a markdown file to the user's workspace.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/triage-requests.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save the report as a markdown file... Output the enriched data as a downloadable CSV', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and writing output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/brainstorm.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Accept context from uploaded files (PRDs, research docs, strategy decks)', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/interview.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save the summary as a markdown file.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/discover.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Accept context from uploaded files' and 'Save the plan as a markdown file', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"category":"nl_quality","rule_id":"R17","file":"pm-marketing-growth/commands/market-product.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling defined for missing or ambiguous product context","false_positive":false,"suggested_fix":"Add a note on handling unclear or insufficient product context"} +{"category":"nl_quality","rule_id":"R17","file":"pm-marketing-growth/commands/north-star.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling defined for missing or ambiguous metrics data","false_positive":false,"suggested_fix":"Add a note on handling unavailable metrics data"} +{"category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/privacy-policy.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling defined for missing or ambiguous data-handling context","false_positive":false,"suggested_fix":"Add a note on handling incomplete data-handling details"} +{"category":"nl_quality","rule_id":"R15","file":"pm-toolkit/commands/proofread.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling described for invocation with no text provided","false_positive":false,"suggested_fix":"Add a step asking the user to paste or upload text if none was provided"} +{"category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/proofread.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for unreadable or corrupted uploaded documents","false_positive":false,"suggested_fix":"Add a note on handling unreadable or empty documents"} +{"category":"nl_quality","rule_id":"R01","file":"pm-toolkit/commands/tailor-resume.md","line":null,"severity":"low","confidence":"high","evidence":"'emphasize JD-relevant accomplishments'; 'Prioritize the most relevant experience'","penalty":-4,"pattern":"vague-quantifier","description":"Two unqualified uses of 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Replace with specific criteria, e.g. experience matching the JD's top listed requirements"} +{"category":"nl_quality","rule_id":"R15","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling described for invocation with no resume provided","false_positive":false,"suggested_fix":"Add a step asking the user to paste or upload a resume if none was provided"} +{"category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for unreadable or corrupted resume files","false_positive":false,"suggested_fix":"Add a note on handling unreadable or empty resumes"} +{"category":"nl_quality","rule_id":"R01","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"low","confidence":"high","evidence":"'[PM-relevant keywords missing...]'; 'mention relevant keywords naturally'","penalty":-4,"pattern":"vague-quantifier","description":"Two unqualified uses of 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Tie to a concrete standard tied to the job posting or PM keyword list"} +{"category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/draft-nda.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or ambiguous party/jurisdiction details","false_positive":false,"suggested_fix":"Add a note on handling incomplete party or jurisdiction details"} +{"category":"nl_quality","rule_id":"R01","file":"pm-toolkit/commands/draft-nda.md","line":null,"severity":"low","confidence":"medium","evidence":"description: '...with jurisdiction-appropriate clauses'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'jurisdiction-appropriate' in frontmatter description","false_positive":false,"suggested_fix":"Name the specific jurisdictional criteria or drop the qualifier"} +{"category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/positioning-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills marketing-ideas, north-star-metric, value-prop-statements, product-name","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing positioning from adjacent marketing skills"} +{"category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/north-star-metric/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing NSM from adjacent metrics/marketing skills"} +{"category":"nl_quality","rule_id":"R06","file":"pm-marketing-growth/skills/marketing-ideas/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"Channel/Core Message/Why It Works/Cost Efficiency fields defined but no sample output shown","penalty":-5,"pattern":"no-worked-example","description":"Structured idea-generation format provided with zero worked examples of an actual campaign idea","false_positive":false,"suggested_fix":"Add one worked example idea illustrating the four fields"} +{"category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/marketing-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing marketing-ideas from adjacent skills"} +{"category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/value-prop-statements/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing value-prop copy from adjacent marketing skills"} +{"category":"nl_quality","rule_id":"R06","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"Name/Rationale/Brand Fit/Memorability/Domain fields defined but no sample output shown","penalty":-5,"pattern":"no-worked-example","description":"Structured naming format provided with zero worked examples of an actual proposed name","false_positive":false,"suggested_fix":"Add one worked example name illustrating the five fields"} +{"category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing naming from adjacent skills"} +{"category":"nl_quality","rule_id":"R01","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'Relevant to the product's core value and use case'","penalty":-2,"pattern":"vague-quantifier","description":"Unqualified use of 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Replace with a specific criterion tied to the stated value prop"} +{"category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/grammar-check/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills privacy-policy, review-resume, draft-nda","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing grammar-check from adjacent toolkit skills"} +{"category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/privacy-policy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills grammar-check, review-resume, draft-nda","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing privacy-policy drafting from adjacent legal/toolkit skills"} +{"category":"nl_quality","rule_id":"R01","file":"pm-toolkit/skills/review-resume/SKILL.md","line":null,"severity":"medium","confidence":"high","evidence":"'relevant PM experience level'; 'highlight relevant experience'; 'most relevant experience first'; 'relevant coursework, internships, projects'; 'Include relevant coursework'","penalty":-10,"pattern":"vague-quantifier","description":"Five separate instructions use 'relevant' as the sole selection criterion without defining what makes something relevant","false_positive":false,"suggested_fix":"Tie each instance to a concrete standard (e.g. matches JD's listed requirements)"} +{"category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/review-resume/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing resume review from adjacent toolkit skills"} +{"category":"nl_quality","rule_id":"R06","file":"pm-toolkit/skills/draft-nda/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"'Where helpful, include examples of what is/isn't confidential information' — no actual example shown","penalty":-5,"pattern":"no-worked-example","description":"Legal-drafting skill instructs including examples in output but never demonstrates one itself","false_positive":false,"suggested_fix":"Add one worked example confidentiality-definition clause"} +{"category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/draft-nda/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing NDA drafting from adjacent legal/toolkit skills"} +{"category":"nl_quality","rule_id":"R01","file":"pm-toolkit/skills/draft-nda/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'have a lawyer in the relevant jurisdiction review'; 'Some industries (tech, pharma, finance) have specific NDA conventions'","penalty":-4,"pattern":"vague-quantifier","description":"Two unqualified vague quantifiers ('relevant', 'some')","false_positive":false,"suggested_fix":"Name the jurisdiction/industry criteria explicitly"} +{"category":"nl_quality","rule_id":"R15","file":"pm-data-analytics/commands/analyze-cohorts.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation (no data and no description)","false_positive":false,"suggested_fix":"Add a branch for zero input asking what the user wants to analyze"} +{"category":"nl_quality","rule_id":"R17","file":"pm-data-analytics/commands/analyze-cohorts.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed or unreadable uploaded data","false_positive":false,"suggested_fix":"Add a check-and-flag step for bad/missing columns"} +{"category":"nl_quality","rule_id":"R15","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation with no question and no schema","false_positive":false,"suggested_fix":"Add fallback: if no question given, ask what data the user wants"} +{"category":"nl_quality","rule_id":"R17","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed or unreadable schema uploads","false_positive":false,"suggested_fix":"Add explicit handling for unreadable/corrupt schema files"} +{"category":"nl_quality","rule_id":"R01","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"low","confidence":"high","evidence":"'Infer a reasonable schema from the question and ask the user to confirm'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'reasonable' used to modify an actual instruction","false_positive":false,"suggested_fix":"Replace with concrete criteria, e.g. infer using common SaaS entities and confirm with the user"} +{"category":"nl_quality","rule_id":"R15","file":"pm-data-analytics/commands/analyze-test.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation (no data, no description)","false_positive":false,"suggested_fix":"Add fallback prompting the user for at least summary stats"} +{"category":"nl_quality","rule_id":"R01","file":"pm-data-analytics/commands/analyze-test.md","line":null,"severity":"low","confidence":"high","evidence":"'Was sample size sufficient? (run a power analysis)'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'sufficient' used to modify an actual instruction","false_positive":false,"suggested_fix":"Replace with a concrete threshold, e.g. meets required n for 80% power"} +{"category":"nl_quality","rule_id":"R15","file":"pm-go-to-market/commands/plan-launch.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation","false_positive":false,"suggested_fix":"Add fallback: if nothing specified, ask what is being launched"} +{"category":"nl_quality","rule_id":"R17","file":"pm-go-to-market/commands/plan-launch.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for an unreadable/unparseable uploaded PRD or deck","false_positive":false,"suggested_fix":"Add a note to flag and ask for re-upload if the file can't be parsed"} +{"category":"nl_quality","rule_id":"R15","file":"pm-go-to-market/commands/growth-strategy.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation","false_positive":false,"suggested_fix":"Add fallback: if no product/challenge is described, ask for one"} +{"category":"nl_quality","rule_id":"R17","file":"pm-go-to-market/commands/growth-strategy.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or bad uploaded metrics data","false_positive":false,"suggested_fix":"Add a check for missing/malformed metrics data"} +{"category":"nl_quality","rule_id":"R15","file":"pm-go-to-market/commands/battlecard.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation (no competitor named)","false_positive":false,"suggested_fix":"Add fallback: if no competitor is named, ask which one"} +{"category":"nl_quality","rule_id":"R17","file":"pm-go-to-market/commands/battlecard.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or unreadable uploaded competitor materials","false_positive":false,"suggested_fix":"Add a check for missing/malformed uploaded materials"} +{"category":"nl_quality","rule_id":"R07","file":"pm-data-analytics/skills/sql-queries/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills ab-test-analysis, cohort-analysis","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For retention analysis, see cohort-analysis'"} +{"category":"nl_quality","rule_id":"R07","file":"pm-data-analytics/skills/ab-test-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills sql-queries, cohort-analysis","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For query generation, see sql-queries'"} +{"category":"nl_quality","rule_id":"R07","file":"pm-data-analytics/skills/cohort-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills sql-queries, ab-test-analysis","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For query generation, see sql-queries'"} +{"category":"nl_quality","rule_id":"R01","file":"pm-data-analytics/skills/cohort-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'5. Sufficient data: At least 3-4 cohorts for meaningful pattern identification'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'Sufficient' used as a heading modifying an actual instruction","false_positive":false,"suggested_fix":"Reword heading to 'Minimum data' and keep the concrete threshold"} +{"category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/gtm-motions/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"7 motion-type sections list tools/tactics only, no worked example line","penalty":-5,"pattern":"no-worked-example","description":"Complex 7-motion-type framework explained with no concrete worked example","false_positive":false,"suggested_fix":"Add a one-line real/illustrative example per motion type"} +{"category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/gtm-motions/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling growth-loops","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling growth-loops (both dispatched by /growth-strategy)","false_positive":false,"suggested_fix":"Add e.g. 'For product-native loops, see growth-loops'"} +{"category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/competitive-battlecard/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite several related sibling skills","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For overall launch strategy, see gtm-strategy'"} +{"category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/beachhead-segment/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"Key Evaluation Criteria and How It Works sections have no worked example","penalty":-5,"pattern":"no-worked-example","description":"Complex 4-criteria framework explained abstractly with no worked example","false_positive":false,"suggested_fix":"Add a short worked example of a product picking a beachhead segment"} +{"category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/beachhead-segment/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling ideal-customer-profile","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling ideal-customer-profile","false_positive":false,"suggested_fix":"Add e.g. 'For full ICP definition, see ideal-customer-profile'"} +{"category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/ideal-customer-profile/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"ICP Framework Components and How It Works sections have no worked example","penalty":-5,"pattern":"no-worked-example","description":"Complex demographics/JTBD/pain-points framework explained abstractly with no worked example","false_positive":false,"suggested_fix":"Add a short worked ICP example"} +{"category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/ideal-customer-profile/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling beachhead-segment","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling beachhead-segment","false_positive":false,"suggested_fix":"Add e.g. 'For first-market selection, see beachhead-segment'"} +{"category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/growth-loops/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling gtm-motions","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling gtm-motions (both dispatched by /growth-strategy)","false_positive":false,"suggested_fix":"Add e.g. 'For acquisition channels, see gtm-motions'"} +{"category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/gtm-strategy/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"5-step 'How It Works' section has no worked example","penalty":-5,"pattern":"no-worked-example","description":"Multi-step GTM strategy framework explained abstractly with no worked example","false_positive":false,"suggested_fix":"Add a short worked launch example"} +{"category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/gtm-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"umbrella skill for beachhead-segment, ideal-customer-profile, gtm-motions, growth-loops, competitive-battlecard with no cross-reference line","penalty":-3,"pattern":"missing-scope-note","description":"Missing scope note despite being the umbrella skill for 5 closely related siblings","false_positive":false,"suggested_fix":"Add e.g. 'For channel selection, see gtm-motions. For first segment, see beachhead-segment'"} +{"category":"nl_quality","rule_id":"R15","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit fallback stated for empty invocation","false_positive":false,"suggested_fix":"Add 'If no product/market given, ask before proceeding'"} +{"category":"nl_quality","rule_id":"R17","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or thin competitor data","false_positive":false,"suggested_fix":"Add a line on low-data handling"} +{"category":"nl_quality","rule_id":"R01","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"low","confidence":"high","evidence":"'Note emerging/disruptive players if relevant'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' modifying an actual instruction","false_positive":false,"suggested_fix":"Replace with a measurable criterion (e.g. funding raised in last 12 months)"} +{"category":"nl_quality","rule_id":"R15","file":"pm-market-research/commands/analyze-feedback.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit fallback for empty/no feedback data provided","false_positive":false,"suggested_fix":"Add explicit 'if no data is provided' branch"} +{"category":"nl_quality","rule_id":"R16","file":"pm-ai-shipping/commands/document-app.md","line":null,"severity":"medium","confidence":"high","evidence":"Step 3 says 'Summarize what was created or updated...' with no template or code block, unlike sibling commands in this plugin","penalty":-10,"pattern":"missing-output-format","description":"No output format/template is defined for the report","false_positive":false,"suggested_fix":"Add an explicit Output template block like the other pm-ai-shipping commands"} +{"category":"nl_quality","rule_id":"R01","file":"pm-ai-shipping/commands/document-app.md","line":null,"severity":"low","confidence":"high","evidence":"'the permission-relevant journeys'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Define which journeys qualify"} +{"category":"nl_quality","rule_id":"R17","file":"pm-ai-shipping/commands/performance-audit-static.md","line":null,"severity":"low","confidence":"medium","evidence":"unlike security-audit-static's 'if docs are absent, recommend /document-app first', no equivalent fallback here","penalty":-5,"pattern":"no-error-path","description":"No explicit handling for a missing/absent prerequisite","false_positive":false,"suggested_fix":"Add a line covering the case where scope has nothing to audit"} +{"category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/market-segments/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example segment","false_positive":false,"suggested_fix":"Add one short worked example segment"} +{"category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/market-segments/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling skills user-segmentation, market-sizing","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/competitor-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example competitor profile","false_positive":false,"suggested_fix":"Add one short worked example competitor profile"} +{"category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/competitor-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling market-research skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure has section headers and an empty summary table, no worked numeric example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled numeric TAM/SAM/SOM example","false_positive":false,"suggested_fix":"Add one short worked TAM/SAM/SOM example"} +{"category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling market-research skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"category":"nl_quality","rule_id":"R01","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'narrow to the relevant slice'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' modifying an actual instruction","false_positive":false,"suggested_fix":"Replace with a measurable narrowing criterion"} +{"category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/customer-journey-map/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling market-research skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/sentiment-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example segment with a sentiment score","false_positive":false,"suggested_fix":"Add one short worked example segment with a sentiment score"} +{"category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/sentiment-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with user-personas, user-segmentation","penalty":-3,"pattern":"missing-scope-note","description":"No scope note clarifying feedback-driven sentiment scope vs. persona/segmentation skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/user-personas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example persona","false_positive":false,"suggested_fix":"Add one short worked example persona"} +{"category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/user-personas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with sentiment-analysis, user-segmentation","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from overlapping sibling skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/user-segmentation/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example segment","false_positive":false,"suggested_fix":"Add one short worked example segment"} +{"category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/user-segmentation/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with market-segments, user-personas","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from overlapping sibling skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"category":"nl_quality","rule_id":"R04","file":"pm-ai-shipping/skills/shipping-artifacts/SKILL.md","line":3,"severity":"low","confidence":"high","evidence":"frontmatter description measured at 585 characters","penalty":-5,"pattern":"description-length-band","description":"Frontmatter description is 585 characters, in the 500-800 penalty band","false_positive":false,"suggested_fix":"Trim description to under 500 chars"} +{"category":"nl_quality","rule_id":"R07","file":"pm-ai-shipping/skills/shipping-artifacts/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"intended-vs-implemented references this skill but this skill does not reciprocate","penalty":-3,"pattern":"missing-scope-note","description":"No reciprocal scope note pointing to sibling intended-vs-implemented","false_positive":false,"suggested_fix":"Add a line like 'For auditing the gap between docs and code, see intended-vs-implemented'"} +{"category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/business-model.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/unclear input across the four modes","false_positive":false,"suggested_fix":"Add a brief note on handling incomplete/ambiguous product descriptions"} +{"category":"nl_quality","rule_id":"R01","file":"pm-product-strategy/commands/business-model.md","line":null,"severity":"low","confidence":"high","evidence":"'Apply the relevant skill(s) as described above.'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Name the specific skill instead of 'relevant'"} +{"category":"nl_quality","rule_id":"R01","file":"pm-product-strategy/commands/pricing.md","line":null,"severity":"low","confidence":"high","evidence":"'For each relevant model: pros, cons, fit for your product...'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Clarify which models count as relevant (e.g. matching the product's distribution model)"} +{"category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/market-scan.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or unreliable market data","false_positive":false,"suggested_fix":"Add guidance for proceeding with limited/uncertain data"} +{"category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/value-proposition.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/incomplete product context","false_positive":false,"suggested_fix":"Add a brief note on handling sparse product descriptions"} +{"category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/strategy.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/contradictory strategy inputs","false_positive":false,"suggested_fix":"Add explicit guidance for handling missing product context"} +{"category":"nl_quality","rule_id":"R01","file":"pm-product-strategy/commands/strategy.md","line":null,"severity":"low","confidence":"high","evidence":"'If the product is early-stage, some sections will be hypotheses'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'some' with no measurable criteria","false_positive":false,"suggested_fix":"Specify which sections typically remain hypotheses"} +{"category":"nl_quality","rule_id":"R07","file":"pm-product-strategy/skills/monetization-strategy/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with out-of-scope sibling pricing-strategy","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling pricing-strategy skill despite clear overlap","false_positive":false,"suggested_fix":"Add a one-line scope note distinguishing monetization-strategy from pricing-strategy"} +{"category":"nl_quality","rule_id":"R04","file":"pm-product-strategy/skills/startup-canvas/SKILL.md","line":3,"severity":"medium","confidence":"medium","evidence":"'...Use when launching a new product or evaluating a startup concept.'","penalty":-15,"pattern":"generic-description","description":"Frontmatter description gives only two specific trigger phrases rather than 3+","false_positive":false,"suggested_fix":"Add a third concrete trigger phrase"} +{"category":"nl_quality","rule_id":"R06","file":"pm-product-strategy/skills/startup-canvas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Domain Context and Template sections contain only placeholders","penalty":-5,"pattern":"no-worked-example","description":"Complex framework-comparison concepts explained with no worked example of a filled canvas","false_positive":false,"suggested_fix":"Add one short worked example of a completed Startup Canvas"} +{"category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/pre-mortem.md","line":null,"severity":"medium","confidence":"medium","evidence":"no fallback if nothing at all is provided","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no plan/PRD at all","false_positive":false,"suggested_fix":"Add explicit fallback, e.g. ask what's being launched"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/pre-mortem.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/thin plan detail","false_positive":false,"suggested_fix":"Add explicit guidance for proceeding with a thin/underspecified plan"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/generate-data.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for an unclear/incomplete schema request","false_positive":false,"suggested_fix":"Add guidance for handling ambiguous schema requests"} +{"category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/red-team-prd.md","line":null,"severity":"medium","confidence":"medium","evidence":"no fallback when nothing at all is supplied","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no plan/doc at all","false_positive":false,"suggested_fix":"Add explicit handling, e.g. ask what's being evaluated"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/red-team-prd.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for a plan too thin to extract load-bearing claims from","false_positive":false,"suggested_fix":"Add guidance for handling a plan too thin to red-team"} +{"category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/transform-roadmap.md","line":null,"severity":"medium","confidence":"medium","evidence":"Step 1 assumes content is already supplied","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no roadmap content at all","false_positive":false,"suggested_fix":"Add explicit fallback asking for the feature list or backlog"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/transform-roadmap.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed/unparseable roadmap input","false_positive":false,"suggested_fix":"Add guidance for handling unparseable roadmap uploads"} +{"category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no user stories/spec at all","false_positive":false,"suggested_fix":"Add explicit fallback, e.g. ask what feature to test"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/ambiguous acceptance criteria","false_positive":false,"suggested_fix":"Add guidance for handling requirements with no clear acceptance criteria"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"low","confidence":"high","evidence":"'Happy Path Scenarios: The expected user flow works correctly'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' with no measurable criteria","false_positive":false,"suggested_fix":"Define what 'works correctly' means relative to acceptance criteria"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/sprint.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/incomplete input in any of the three modes","false_positive":false,"suggested_fix":"Add a brief fallback note per mode for sparse input"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/write-stories.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/unclear feature input","false_positive":false,"suggested_fix":"Add fallback for when no feature description or PRD is supplied"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/commands/write-stories.md","line":null,"severity":"low","confidence":"high","evidence":"'Include design links or mockup references where relevant'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Specify when design links should be included"} +{"category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/stakeholder-map.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/incomplete stakeholder information","false_positive":false,"suggested_fix":"Add guidance for proceeding when stakeholder info is sparse"} +{"category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/user-stories/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from closely related job-stories/wwas skills","false_positive":false,"suggested_fix":"Add a line pointing to job-stories and wwas"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/user-stories/SKILL.md","line":41,"severity":"low","confidence":"medium","evidence":"'3. [System validates correctly]'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' in acceptance-criteria template","false_positive":false,"suggested_fix":"Replace with a specific, testable validation criterion"} +{"category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/retro/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing retro from closely related sprint-plan","false_positive":false,"suggested_fix":"Add a line like 'For sprint planning, see sprint-plan'"} +{"category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/test-scenarios/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note noting this skill consumes output from user-stories/job-stories/wwas","false_positive":false,"suggested_fix":"Add a line noting it takes acceptance criteria from those skills"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/test-scenarios/SKILL.md","line":67,"severity":"low","confidence":"medium","evidence":"'Images, titles, and prices are displayed correctly'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' in worked example test step","false_positive":false,"suggested_fix":"Specify what 'correct' means relative to source-of-truth fields"} +{"category":"nl_quality","rule_id":"R06","file":"pm-execution/skills/create-prd/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"8-section PRD framework has no concrete worked example anywhere","penalty":-5,"pattern":"no-worked-example","description":"No worked example of a filled PRD","false_positive":false,"suggested_fix":"Add a short filled-in example PRD section or link to one"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/create-prd/SKILL.md","line":60,"severity":"low","confidence":"medium","evidence":"'7.3 Technology (optional, only if relevant)'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no criteria for when the subsection applies","false_positive":false,"suggested_fix":"State the condition under which Technology detail should be included"} +{"category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/wwas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing WWA format from user-stories/job-stories","false_positive":false,"suggested_fix":"Add a line pointing to user-stories and job-stories"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/wwas/SKILL.md","line":54,"severity":"low","confidence":"medium","evidence":"'System handles multiple expense categories correctly'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' in worked example acceptance criterion","false_positive":false,"suggested_fix":"Specify observable behavior instead of 'correctly'"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/wwas/SKILL.md","line":26,"severity":"low","confidence":"medium","evidence":"'8. Size appropriately - Small enough for one sprint estimate'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'appropriately' with no measurable criterion","false_positive":false,"suggested_fix":"Give a concrete sizing threshold"} +{"category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/job-stories/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing job-stories from user-stories/wwas","false_positive":false,"suggested_fix":"Add a line pointing to user-stories and wwas"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/job-stories/SKILL.md","line":37,"severity":"low","confidence":"medium","evidence":"'1. [Situation is properly recognized]'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'properly' in acceptance-criteria template","false_positive":false,"suggested_fix":"Replace with a specific, testable recognition criterion"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/brainstorm-okrs/SKILL.md","line":23,"severity":"low","confidence":"medium","evidence":"'Key Results always refer to quantitative metrics, some of which might be KPIs.'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'some' with no measurable criteria","false_positive":false,"suggested_fix":"Clarify which/how many Key Results are typically KPIs"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/summarize-meeting/SKILL.md","line":49,"severity":"low","confidence":"high","evidence":"'[Additional points as needed]'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'as needed' with no criteria for when additional points apply","false_positive":false,"suggested_fix":"Replace with explicit guidance on what triggers an additional point"} +{"category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/sprint-plan/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing sprint-plan (pre-sprint) from retro (post-sprint)","false_positive":false,"suggested_fix":"Add a line like 'For post-sprint reflection, see retro'"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/sprint-plan/SKILL.md","line":33,"severity":"low","confidence":"medium","evidence":"'Sequence dependent stories appropriately'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'appropriately' with no measurable criterion","false_positive":false,"suggested_fix":"Specify sequencing rule (e.g. topological order by blocking dependency)"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/dummy-dataset/SKILL.md","line":101,"severity":"low","confidence":"medium","evidence":"'Realistic, business-appropriate values'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'appropriate' with no measurable criteria","false_positive":false,"suggested_fix":"Define what makes a value business-appropriate (valid ranges/enums per column)"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/stakeholder-map/SKILL.md","line":18,"severity":"low","confidence":"medium","evidence":"'List all relevant individuals and groups'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no criteria for what counts as a relevant stakeholder","false_positive":false,"suggested_fix":"Give criteria for inclusion (e.g. decision authority or direct impact)"} +{"category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/pre-mortem/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"strategy-red-team references pre-mortem but pre-mortem does not reciprocate","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing pre-mortem from closely related strategy-red-team","false_positive":false,"suggested_fix":"Add a line like 'For attacking a plan's assumptions before launch, see strategy-red-team'"} +{"category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/pre-mortem/SKILL.md","line":18,"severity":"low","confidence":"medium","evidence":"'If relevant, use web search to research competitive landscape or market conditions.'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no criteria for when web search should be used","false_positive":false,"suggested_fix":"State the condition that makes web search relevant"} +{"category":"nl_quality","rule_id":"R06","file":"pm-execution/skills/strategy-red-team/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"only an abstract output template, no filled worked example","penalty":-5,"pattern":"no-worked-example","description":"Novel/complex red-team methodology explained with no worked example","false_positive":false,"suggested_fix":"Add one short worked kill-assumption example"} +{"category":"nl_quality","rule_id":"R17","file":"pm-product-discovery/commands/triage-requests.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed or unreadable uploaded files","false_positive":false,"suggested_fix":"Add a fallback instruction for unparsable or malformed uploads"} +{"category":"nl_quality","rule_id":"R17","file":"pm-product-discovery/commands/brainstorm.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No fallback described for unreadable/bad uploaded context files","false_positive":false,"suggested_fix":"Add a note on handling unreadable/malformed uploads"} +{"category":"nl_quality","rule_id":"R17","file":"pm-product-discovery/commands/discover.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for bad/unreadable uploaded research files","false_positive":false,"suggested_fix":"Add a note on handling unreadable/malformed uploads"} +{"category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/analyze-feature-requests/SKILL.md","line":18,"severity":"low","confidence":"medium","evidence":"Opportunity Score formula given with no worked numeric example","penalty":-5,"pattern":"no-worked-example","description":"Opportunity Score formula introduced with no worked example","false_positive":false,"suggested_fix":"Add a short worked example (sample Importance/Satisfaction values to score)"} +{"category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-ideas-existing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(Existing Product)' but body never cross-references brainstorm-ideas-new","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-ideas-new","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-ideas-new for new-product ideation"} +{"category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/prioritize-assumptions/SKILL.md","line":26,"severity":"low","confidence":"medium","evidence":"'Risk: Defined as (1 - Confidence) x Effort' with no sample calculation","penalty":-5,"pattern":"no-worked-example","description":"ICE/RICE and Impact x Risk formulas described but never illustrated with a worked example","false_positive":false,"suggested_fix":"Add one worked example assumption run through the formula and matrix"} +{"category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-experiments-new/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(New Product)' but body never cross-references brainstorm-experiments-existing","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-experiments-existing","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-experiments-existing"} +{"category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/opportunity-solution-tree/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"individual levels get fragmentary examples only, no connected end-to-end example","penalty":-5,"pattern":"no-worked-example","description":"4-level OST structure has no single worked example chain","false_positive":false,"suggested_fix":"Add one small end-to-end worked OST example"} +{"category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/identify-assumptions-existing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(Existing Product)' but body never mentions identify-assumptions-new","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling identify-assumptions-new","false_positive":false,"suggested_fix":"Add a scope note pointing to identify-assumptions-new"} +{"category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/prioritize-features/SKILL.md","line":20,"severity":"low","confidence":"medium","evidence":"Opportunity Score, ICE, and RICE formulas named but never demonstrated","penalty":-5,"pattern":"no-worked-example","description":"Prioritization formulas introduced with no worked numeric example","false_positive":false,"suggested_fix":"Add one worked example scoring a sample feature"} +{"category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/identify-assumptions-new/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"body never mentions identify-assumptions-existing despite extending its 4 core risks to 8","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling identify-assumptions-existing","false_positive":false,"suggested_fix":"Add a scope note pointing to identify-assumptions-existing"} +{"category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-experiments-existing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(Existing Product)' but body never points to brainstorm-experiments-new","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-experiments-new","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-experiments-new"} +{"category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(New Product)' but body never points to brainstorm-ideas-existing","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-ideas-existing","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-ideas-existing"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/ansoff-matrix/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/business-model/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/lean-canvas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/monetization-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/pestle-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/porters-five-forces/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/pricing-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/product-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/product-vision/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/startup-canvas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/swot-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/value-proposition/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/analyze-feature-requests/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-experiments-existing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-experiments-new/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-ideas-existing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/identify-assumptions-existing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/identify-assumptions-new/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/interview-script/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/metrics-dashboard/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/opportunity-solution-tree/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/prioritize-assumptions/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/prioritize-features/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/summarize-interview/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/marketing-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/north-star-metric/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/positioning-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/value-prop-statements/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/competitor-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/customer-journey-map/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/market-segments/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/sentiment-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/user-personas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/user-segmentation/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/beachhead-segment/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/competitive-battlecard/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/growth-loops/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/gtm-motions/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/gtm-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/ideal-customer-profile/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/brainstorm-okrs/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/create-prd/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/outcome-roadmap/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/pre-mortem/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/release-notes/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/retro/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/sprint-plan/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/stakeholder-map/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/strategy-red-team/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/summarize-meeting/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-data-analytics/skills/ab-test-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} diff --git a/auditor/audits/phuryn-pm-skills.md b/auditor/audits/phuryn-pm-skills.md new file mode 100644 index 000000000..e6343eacf --- /dev/null +++ b/auditor/audits/phuryn-pm-skills.md @@ -0,0 +1,332 @@ +# NLPM Audit: phuryn/pm-skills +**Date**: 2026-04-06 | **Artifacts**: 100 (42 commands + 58 skills; scope per audit task — see Cross-Component) | **Strategy**: progressive +**NL Score**: 92/100 +**Security**: CLEAR +**Bugs**: 38 | **Quality Issues**: 134 | **Security Findings**: 0 + +## NL Score Summary +| File | Type | Score | Top Issue | +|------|------|-------|-----------| +| pm-toolkit/commands/review-resume.md | command | 76 | No handling for empty/missing input | +| pm-data-analytics/commands/write-query.md | command | 78 | Missing allowed-tools despite reading uploaded schema files | +| pm-market-research/commands/competitive-analysis.md | command | 78 | No explicit handling for empty/missing input | +| pm-execution/commands/test-scenarios.md | command | 78 | No handling for empty/missing input | +| pm-toolkit/commands/proofread.md | command | 80 | No handling for empty/missing input | +| pm-data-analytics/commands/analyze-cohorts.md | command | 80 | Missing allowed-tools despite Python/pandas + file-save use | +| pm-go-to-market/commands/plan-launch.md | command | 80 | Missing allowed-tools despite file-save + PRD/deck upload use | +| pm-go-to-market/commands/growth-strategy.md | command | 80 | Missing allowed-tools despite file-save + metrics upload use | +| pm-go-to-market/commands/battlecard.md | command | 80 | Missing allowed-tools despite web-research + file-save use | +| pm-product-strategy/skills/startup-canvas/SKILL.md | skill | 80 | Description has only 2 trigger phrases (borderline generic) | +| pm-execution/commands/pre-mortem.md | command | 80 | No handling for empty/missing plan input | +| pm-execution/commands/transform-roadmap.md | command | 80 | No handling for empty/missing roadmap input | +| pm-data-analytics/commands/analyze-test.md | command | 83 | Missing allowed-tools despite Python/scipy + CSV upload use | +| pm-ai-shipping/commands/document-app.md | command | 83 | No structured output template defined | +| pm-market-research/commands/analyze-feedback.md | command | 85 | No explicit handling for empty/missing input | +| pm-execution/commands/red-team-prd.md | command | 85 | No handling for empty/missing plan input | +| pm-toolkit/skills/review-resume/SKILL.md | skill | 87 | Repeated unqualified use of "relevant" | +| pm-toolkit/commands/draft-nda.md | command | 88 | Missing allowed-tools despite file-save instruction | +| pm-toolkit/skills/draft-nda/SKILL.md | skill | 88 | No worked example of actual NDA clause language | +| pm-product-strategy/commands/business-model.md | command | 88 | Missing allowed-tools despite file-save instruction | +| pm-product-strategy/commands/strategy.md | command | 88 | Missing allowed-tools despite file-save instruction | +| pm-execution/commands/write-stories.md | command | 88 | Missing allowed-tools despite file-save instruction | +| pm-marketing-growth/commands/market-product.md | command | 90 | Missing allowed-tools despite file-save instruction | +| pm-marketing-growth/commands/north-star.md | command | 90 | Missing allowed-tools despite file-save instruction | +| pm-toolkit/commands/privacy-policy.md | command | 90 | Missing allowed-tools despite file-save instruction | +| pm-marketing-growth/skills/product-name/SKILL.md | skill | 90 | No concrete example of a generated name | +| pm-market-research/skills/market-sizing/SKILL.md | skill | 90 | No concrete worked example | +| pm-product-strategy/commands/market-scan.md | command | 90 | Missing allowed-tools despite web-research instruction | +| pm-product-strategy/commands/value-proposition.md | command | 90 | Missing allowed-tools despite file-save instruction | +| pm-execution/commands/stakeholder-map.md | command | 90 | Missing allowed-tools despite file-save instruction | +| pm-execution/commands/generate-data.md | command | 90 | Missing allowed-tools despite script-execution + file-save use | +| pm-execution/commands/sprint.md | command | 90 | Missing allowed-tools despite file-save instruction | +| pm-product-discovery/commands/triage-requests.md | command | 90 | Missing allowed-tools frontmatter | +| pm-product-discovery/commands/brainstorm.md | command | 90 | Missing allowed-tools frontmatter | +| pm-product-discovery/commands/discover.md | command | 90 | Missing allowed-tools frontmatter | +| pm-toolkit/commands/tailor-resume.md | command | 91 | Missing allowed-tools despite file-upload handling | +| pm-marketing-growth/skills/marketing-ideas/SKILL.md | skill | 92 | No concrete example of a generated idea | +| pm-go-to-market/skills/gtm-motions/SKILL.md | skill | 92 | Complex 7-motion-type framework, no worked examples | +| pm-go-to-market/skills/beachhead-segment/SKILL.md | skill | 92 | Complex 4-criteria framework, no worked example | +| pm-go-to-market/skills/ideal-customer-profile/SKILL.md | skill | 92 | Complex JTBD/ICP framework, no worked example | +| pm-go-to-market/skills/gtm-strategy/SKILL.md | skill | 92 | GTM framework explained with no worked example | +| pm-market-research/skills/market-segments/SKILL.md | skill | 92 | No concrete worked example | +| pm-market-research/skills/competitor-analysis/SKILL.md | skill | 92 | No concrete worked example | +| pm-market-research/skills/sentiment-analysis/SKILL.md | skill | 92 | No concrete worked example | +| pm-market-research/skills/user-personas/SKILL.md | skill | 92 | No concrete worked example | +| pm-market-research/skills/user-segmentation/SKILL.md | skill | 92 | No concrete worked example | +| pm-ai-shipping/skills/shipping-artifacts/SKILL.md | skill | 92 | Description length in 500-800 char penalty band (585 chars) | +| pm-product-strategy/commands/pricing.md | command | 93 | Missing allowed-tools despite web-research + file-save use | +| pm-execution/skills/create-prd/SKILL.md | skill | 93 | No worked example of a filled PRD | +| pm-execution/skills/wwas/SKILL.md | skill | 93 | Missing scope note vs. user-stories/job-stories | +| pm-market-research/commands/research-users.md | command | 95 | Missing allowed-tools despite clear tool use | +| pm-ai-shipping/commands/derive-tests.md | command | 95 | Missing allowed-tools despite clear tool use | +| pm-ai-shipping/commands/ship-check.md | command | 95 | Missing allowed-tools despite clear tool use | +| pm-ai-shipping/commands/performance-audit-static.md | command | 95 | No error-path handling for missing prerequisite input | +| pm-execution/commands/write-prd.md | command | 95 | Missing allowed-tools despite file-save instruction | +| pm-execution/commands/meeting-notes.md | command | 95 | Missing allowed-tools despite file-save instruction | +| pm-execution/skills/user-stories/SKILL.md | skill | 95 | Missing scope note vs. job-stories/wwas | +| pm-execution/skills/test-scenarios/SKILL.md | skill | 95 | Missing scope note vs. user-stories/job-stories/wwas | +| pm-execution/skills/job-stories/SKILL.md | skill | 95 | Missing scope note vs. user-stories/wwas | +| pm-execution/skills/sprint-plan/SKILL.md | skill | 95 | Missing scope note vs. retro | +| pm-execution/skills/pre-mortem/SKILL.md | skill | 95 | Missing scope note vs. strategy-red-team | +| pm-execution/skills/strategy-red-team/SKILL.md | skill | 95 | No worked example of the red-team methodology | +| pm-product-discovery/commands/setup-metrics.md | command | 95 | Missing allowed-tools frontmatter | +| pm-product-discovery/commands/interview.md | command | 95 | Missing allowed-tools frontmatter | +| pm-product-discovery/skills/analyze-feature-requests/SKILL.md | skill | 95 | Opportunity Score formula, no worked example | +| pm-product-discovery/skills/prioritize-assumptions/SKILL.md | skill | 95 | ICE/Risk formula, no worked numeric example | +| pm-product-discovery/skills/opportunity-solution-tree/SKILL.md | skill | 95 | No single end-to-end worked example | +| pm-product-discovery/skills/prioritize-features/SKILL.md | skill | 95 | Opportunity/ICE/RICE formulas, no worked example | +| pm-data-analytics/skills/cohort-analysis/SKILL.md | skill | 95 | No scope note vs. sibling skills | +| pm-marketing-growth/skills/positioning-ideas/SKILL.md | skill | 97 | Missing scope note | +| pm-marketing-growth/skills/north-star-metric/SKILL.md | skill | 97 | Missing scope note | +| pm-marketing-growth/skills/value-prop-statements/SKILL.md | skill | 97 | Missing scope note | +| pm-toolkit/skills/grammar-check/SKILL.md | skill | 97 | Missing scope note | +| pm-toolkit/skills/privacy-policy/SKILL.md | skill | 97 | Missing scope note | +| pm-data-analytics/skills/sql-queries/SKILL.md | skill | 97 | No scope note vs. sibling skills | +| pm-data-analytics/skills/ab-test-analysis/SKILL.md | skill | 97 | No scope note vs. sibling skills | +| pm-go-to-market/skills/competitive-battlecard/SKILL.md | skill | 97 | No scope note vs. sibling skills | +| pm-go-to-market/skills/growth-loops/SKILL.md | skill | 97 | No scope note vs. gtm-motions | +| pm-market-research/skills/customer-journey-map/SKILL.md | skill | 97 | Missing scope note vs. sibling skills | +| pm-product-strategy/skills/monetization-strategy/SKILL.md | skill | 97 | No scope note vs. sibling pricing-strategy skill | +| pm-execution/skills/retro/SKILL.md | skill | 97 | Missing scope note vs. sprint-plan | +| pm-product-discovery/skills/brainstorm-ideas-existing/SKILL.md | skill | 97 | No scope note vs. brainstorm-ideas-new | +| pm-product-discovery/skills/brainstorm-experiments-new/SKILL.md | skill | 97 | No scope note vs. brainstorm-experiments-existing | +| pm-product-discovery/skills/identify-assumptions-existing/SKILL.md | skill | 97 | No scope note vs. identify-assumptions-new | +| pm-product-discovery/skills/identify-assumptions-new/SKILL.md | skill | 97 | No scope note vs. identify-assumptions-existing | +| pm-product-discovery/skills/brainstorm-experiments-existing/SKILL.md | skill | 97 | No scope note vs. brainstorm-experiments-new | +| pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md | skill | 97 | No scope note vs. brainstorm-ideas-existing | +| pm-execution/skills/brainstorm-okrs/SKILL.md | skill | 98 | Vague quantifier "some" | +| pm-execution/skills/summarize-meeting/SKILL.md | skill | 98 | Vague quantifier "as needed" | +| pm-execution/skills/dummy-dataset/SKILL.md | skill | 98 | Vague quantifier "business-appropriate" | +| pm-execution/skills/stakeholder-map/SKILL.md | skill | 98 | Vague quantifier "relevant" | +| pm-ai-shipping/commands/security-audit-static.md | command | 100 | None | +| pm-ai-shipping/skills/intended-vs-implemented/SKILL.md | skill | 100 | None | +| pm-execution/commands/plan-okrs.md | command | 100 | None | +| pm-execution/skills/outcome-roadmap/SKILL.md | skill | 100 | None | +| pm-execution/skills/prioritization-frameworks/SKILL.md | skill | 100 | None | +| pm-execution/skills/release-notes/SKILL.md | skill | 100 | None | +| pm-product-discovery/skills/summarize-interview/SKILL.md | skill | 100 | None | +| pm-product-discovery/skills/interview-script/SKILL.md | skill | 100 | None | +| pm-product-discovery/skills/metrics-dashboard/SKILL.md | skill | 100 | None | + +## Security Scan +| Severity | Count | +|----------|-------| +| Critical | 0 | +| High | 0 | +| Medium | 0 | +| Low | 0 | + +### Execution Surface Inventory +| Surface | Files | +|---------|-------| +| Hooks | none | +| Scripts | `validate_plugins.py`, `tests/test_validator.py`, `tests/test_consistency.py` | +| MCP configs | none | +| Package manifests | none (`package.json`, `requirements.txt` not present) | + +All three Python scripts are stdlib-only (`json`, `os`, `re`, `sys`, `pathlib`, `unittest`). No `eval`/`exec`, no `subprocess`/`os.system`, no `shell=True`, no network calls (`curl`/`wget`/`requests`/`fetch`), no credential handling, no dynamic code loading, no file writes outside the repo tree (`validate_plugins.py` only reads; the two test modules only read via `Path.read_text`/`json.load`). `validate_plugins.py`'s only "risk-adjacent" behavior is ANSI color-code printing to stdout — cosmetic, not a security concern. No `.mcp.json`, no hooks, no `package.json` postinstall scripts. + +Commands (`*/commands/*.md`) were also checked for the "Bash + unsanitized user arguments" pattern: none of the 42 commands declare or instruct raw shell execution of `$ARGUMENTS`; the two commands that do declare `allowed-tools` (`security-audit-static.md`, `performance-audit-static.md`) scope their `Bash` grants to read-only git subcommands (`Bash(git log:*)`, `Bash(git diff:*)`, `Bash(git show:*)`) and a path-scoped `Write(reports/**)` — least-privilege, no injection surface. + +### Security Findings +No security findings. + +## Bugs (PR-worthy) + +Systemic pattern: **38 of 42 commands (90%)** instruct the model to use a specific tool (`Write` to save output, `Read` to ingest uploaded files, `Bash` to execute a script, `WebSearch`/`WebFetch` for research, `Task` to fan out subagents) but declare no `allowed-tools` frontmatter field at all. Only 2 commands in the repo (`pm-ai-shipping/commands/security-audit-static.md`, `pm-ai-shipping/commands/performance-audit-static.md`) declare `allowed-tools`, and both scope it tightly. This is deterministic and reproducible (`grep -L allowed-tools` cross-referenced against explicit tool-use instructions in the body) — every row below is a mechanical one-line frontmatter fix. + +| # | File | Issue | Impact | +|---|------|-------|--------| +| 1 | pm-marketing-growth/commands/market-product.md | Instructs "Save as markdown" (Write) with no allowed-tools declared | Command runs with unrestricted, undeclared tool access instead of least-privilege | +| 2 | pm-marketing-growth/commands/north-star.md | Instructs "Save as markdown" (Write) with no allowed-tools declared | Same | +| 3 | pm-toolkit/commands/privacy-policy.md | Instructs "Save as markdown. Offer DOCX export." with no allowed-tools declared | Same | +| 4 | pm-toolkit/commands/proofread.md | Instructs accepting uploaded DOCX/PDF (Read) with no allowed-tools declared | Same | +| 5 | pm-toolkit/commands/tailor-resume.md | Instructs reading uploaded resume/JD + URL fetch (Read, WebFetch) with no allowed-tools declared | Same | +| 6 | pm-toolkit/commands/review-resume.md | Instructs "Accept... uploaded PDF, or DOCX file" (Read) with no allowed-tools declared | Same | +| 7 | pm-toolkit/commands/draft-nda.md | Instructs "Save as markdown. Offer to export as DOCX" with no allowed-tools declared | Same | +| 8 | pm-data-analytics/commands/analyze-cohorts.md | Instructs Python/pandas processing + markdown/CSV save with no allowed-tools declared | Same | +| 9 | pm-data-analytics/commands/write-query.md | Instructs reading uploaded schema files with no allowed-tools declared | Same | +| 10 | pm-data-analytics/commands/analyze-test.md | Instructs Python/scipy.stats + CSV/screenshot read with no allowed-tools declared | Same | +| 11 | pm-go-to-market/commands/plan-launch.md | Instructs "Save as markdown" + PRD/deck upload with no allowed-tools declared | Same | +| 12 | pm-go-to-market/commands/growth-strategy.md | Instructs "Save as markdown" + metrics upload with no allowed-tools declared | Same | +| 13 | pm-go-to-market/commands/battlecard.md | Instructs web research + "Save as markdown" with no allowed-tools declared | Same | +| 14 | pm-market-research/commands/competitive-analysis.md | Instructs web research + "Save as markdown" with no allowed-tools declared | Same | +| 15 | pm-market-research/commands/analyze-feedback.md | Instructs reading uploaded CSV/Excel + saving CSV/markdown with no allowed-tools declared | Same | +| 16 | pm-market-research/commands/research-users.md | Instructs reading uploaded research files + "Save as markdown" with no allowed-tools declared | Same | +| 17 | pm-ai-shipping/commands/derive-tests.md | Instructs writing `documentation/tests.md` + timestamped report with no allowed-tools declared | Same | +| 18 | pm-ai-shipping/commands/document-app.md | Instructs producing files under `documentation/` and fanning out subagents (Write, Task) with no allowed-tools declared | Same | +| 19 | pm-ai-shipping/commands/ship-check.md | Instructs creating/refreshing CLAUDE.md/AGENTS.md + parallel subagents (Write, Task) with no allowed-tools declared | Same | +| 20 | pm-product-strategy/commands/business-model.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 21 | pm-product-strategy/commands/pricing.md | Instructs web research + "Save as markdown" with no allowed-tools declared | Same | +| 22 | pm-product-strategy/commands/market-scan.md | Instructs "Use web research to ground the analysis" with no allowed-tools declared | Same | +| 23 | pm-product-strategy/commands/value-proposition.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 24 | pm-product-strategy/commands/strategy.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 25 | pm-execution/commands/write-prd.md | Instructs "Save the PRD as a markdown file" with no allowed-tools declared | Same | +| 26 | pm-execution/commands/stakeholder-map.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 27 | pm-execution/commands/pre-mortem.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 28 | pm-execution/commands/generate-data.md | Instructs executing a generator script + saving output (Bash, Write) with no allowed-tools declared | Same | +| 29 | pm-execution/commands/meeting-notes.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 30 | pm-execution/commands/transform-roadmap.md | Instructs "Save as a markdown file" with no allowed-tools declared | Same | +| 31 | pm-execution/commands/test-scenarios.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 32 | pm-execution/commands/sprint.md | Instructs "Save as markdown and offer to format for different channels" with no allowed-tools declared | Same | +| 33 | pm-execution/commands/write-stories.md | Instructs "Save as markdown" with no allowed-tools declared | Same | +| 34 | pm-product-discovery/commands/setup-metrics.md | Instructs "Save as a markdown file" with no allowed-tools declared | Same | +| 35 | pm-product-discovery/commands/triage-requests.md | Instructs reading uploaded files + saving markdown/CSV output with no allowed-tools declared | Same | +| 36 | pm-product-discovery/commands/brainstorm.md | Instructs "Accept context from uploaded files" (Read) with no allowed-tools declared | Same | +| 37 | pm-product-discovery/commands/interview.md | Instructs "Save the summary as a markdown file" with no allowed-tools declared | Same | +| 38 | pm-product-discovery/commands/discover.md | Instructs reading uploaded research + "Save the plan as a markdown file" with no allowed-tools declared | Same | + +## Security Fixes (PR-worthy, Medium/Low only) +No Medium/Low security findings — nothing to fix. + +## Quality Issues (informational) +| # | File | Issue | Penalty | +|---|------|-------|---------| +| 1 | pm-marketing-growth/commands/market-product.md | No error-path handling for missing/ambiguous product context (R17) | -5 | +| 2 | pm-marketing-growth/commands/north-star.md | No error-path handling for missing/ambiguous metrics data (R17) | -5 | +| 3 | pm-toolkit/commands/privacy-policy.md | No error-path handling for missing/ambiguous data-handling context (R17) | -5 | +| 4 | pm-toolkit/commands/proofread.md | No handling for empty/missing input — no text provided (R15) | -10 | +| 5 | pm-toolkit/commands/proofread.md | No error-path handling for unreadable/corrupted documents (R17) | -5 | +| 6 | pm-toolkit/commands/tailor-resume.md | Two unqualified uses of "relevant" (R01) | -4 | +| 7 | pm-toolkit/commands/review-resume.md | No handling for empty/missing input — no resume provided (R15) | -10 | +| 8 | pm-toolkit/commands/review-resume.md | No error-path handling for unreadable/corrupted resume files (R17) | -5 | +| 9 | pm-toolkit/commands/review-resume.md | Two unqualified uses of "relevant" (R01) | -4 | +| 10 | pm-toolkit/commands/draft-nda.md | No error-path handling for missing/ambiguous party/jurisdiction details (R17) | -5 | +| 11 | pm-toolkit/commands/draft-nda.md | Vague quantifier "jurisdiction-appropriate" in description (R01) | -2 | +| 12 | pm-marketing-growth/skills/positioning-ideas/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 13 | pm-marketing-growth/skills/north-star-metric/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 14 | pm-marketing-growth/skills/marketing-ideas/SKILL.md | No worked example of a generated idea (R06) | -5 | +| 15 | pm-marketing-growth/skills/marketing-ideas/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 16 | pm-marketing-growth/skills/value-prop-statements/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 17 | pm-marketing-growth/skills/product-name/SKILL.md | No worked example of a generated name (R06) | -5 | +| 18 | pm-marketing-growth/skills/product-name/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 19 | pm-marketing-growth/skills/product-name/SKILL.md | Unqualified "relevant" (R01) | -2 | +| 20 | pm-toolkit/skills/grammar-check/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 21 | pm-toolkit/skills/privacy-policy/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 22 | pm-toolkit/skills/review-resume/SKILL.md | Five unqualified uses of "relevant" (R01) | -10 | +| 23 | pm-toolkit/skills/review-resume/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 24 | pm-toolkit/skills/draft-nda/SKILL.md | No worked example of NDA clause language (R06) | -5 | +| 25 | pm-toolkit/skills/draft-nda/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 26 | pm-toolkit/skills/draft-nda/SKILL.md | Vague quantifiers "relevant", "some" (R01) | -4 | +| 27 | pm-data-analytics/commands/analyze-cohorts.md | No empty-input handling for zero data + zero description (R15) | -10 | +| 28 | pm-data-analytics/commands/analyze-cohorts.md | No error-path handling for malformed/unreadable data (R17) | -5 | +| 29 | pm-data-analytics/commands/write-query.md | No empty-input handling (R15) | -10 | +| 30 | pm-data-analytics/commands/write-query.md | No error-path handling for malformed schema uploads (R17) | -5 | +| 31 | pm-data-analytics/commands/write-query.md | Vague quantifier "reasonable" (R01) | -2 | +| 32 | pm-data-analytics/commands/analyze-test.md | No empty-input handling (R15) | -10 | +| 33 | pm-data-analytics/commands/analyze-test.md | Vague quantifier "sufficient" (R01) | -2 | +| 34 | pm-go-to-market/commands/plan-launch.md | No empty-input handling (R15) | -10 | +| 35 | pm-go-to-market/commands/plan-launch.md | No error-path handling for unreadable PRD/deck uploads (R17) | -5 | +| 36 | pm-go-to-market/commands/growth-strategy.md | No empty-input handling (R15) | -10 | +| 37 | pm-go-to-market/commands/growth-strategy.md | No error-path handling for bad metrics data (R17) | -5 | +| 38 | pm-go-to-market/commands/battlecard.md | No empty-input handling (R15) | -10 | +| 39 | pm-go-to-market/commands/battlecard.md | No error-path handling for missing competitor materials (R17) | -5 | +| 40 | pm-data-analytics/skills/sql-queries/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 41 | pm-data-analytics/skills/ab-test-analysis/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 42 | pm-data-analytics/skills/cohort-analysis/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 43 | pm-data-analytics/skills/cohort-analysis/SKILL.md | Vague quantifier "Sufficient" as a heading (R01) | -2 | +| 44 | pm-go-to-market/skills/gtm-motions/SKILL.md | Complex 7-motion-type framework with no worked examples (R06) | -5 | +| 45 | pm-go-to-market/skills/gtm-motions/SKILL.md | Missing scope note vs. growth-loops (R07) | -3 | +| 46 | pm-go-to-market/skills/competitive-battlecard/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 47 | pm-go-to-market/skills/beachhead-segment/SKILL.md | No worked example (R06) | -5 | +| 48 | pm-go-to-market/skills/beachhead-segment/SKILL.md | Missing scope note vs. ideal-customer-profile (R07) | -3 | +| 49 | pm-go-to-market/skills/ideal-customer-profile/SKILL.md | No worked example (R06) | -5 | +| 50 | pm-go-to-market/skills/ideal-customer-profile/SKILL.md | Missing scope note vs. beachhead-segment (R07) | -3 | +| 51 | pm-go-to-market/skills/growth-loops/SKILL.md | Missing scope note vs. gtm-motions (R07) | -3 | +| 52 | pm-go-to-market/skills/gtm-strategy/SKILL.md | No worked example (R06) | -5 | +| 53 | pm-go-to-market/skills/gtm-strategy/SKILL.md | Missing scope note (umbrella skill for 5 siblings) (R07) | -3 | +| 54 | pm-market-research/commands/competitive-analysis.md | No empty-input handling (R15) | -10 | +| 55 | pm-market-research/commands/competitive-analysis.md | No error-path handling for missing competitor data (R17) | -5 | +| 56 | pm-market-research/commands/competitive-analysis.md | Vague quantifier "relevant" (R01) | -2 | +| 57 | pm-market-research/commands/analyze-feedback.md | No empty-input handling (R15) | -10 | +| 58 | pm-ai-shipping/commands/document-app.md | No output format/template defined, unlike sibling commands (R16) | -10 | +| 59 | pm-ai-shipping/commands/document-app.md | Vague quantifier "relevant" ("permission-relevant journeys") (R01) | -2 | +| 60 | pm-ai-shipping/commands/performance-audit-static.md | No error-path handling for missing prerequisite input (R17) | -5 | +| 61 | pm-market-research/skills/market-segments/SKILL.md | No worked example (R06) | -5 | +| 62 | pm-market-research/skills/market-segments/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 63 | pm-market-research/skills/competitor-analysis/SKILL.md | No worked example (R06) | -5 | +| 64 | pm-market-research/skills/competitor-analysis/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 65 | pm-market-research/skills/market-sizing/SKILL.md | No worked TAM/SAM/SOM example (R06) | -5 | +| 66 | pm-market-research/skills/market-sizing/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 67 | pm-market-research/skills/market-sizing/SKILL.md | Vague quantifier "relevant" (R01) | -2 | +| 68 | pm-market-research/skills/customer-journey-map/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 69 | pm-market-research/skills/sentiment-analysis/SKILL.md | No worked example (R06) | -5 | +| 70 | pm-market-research/skills/sentiment-analysis/SKILL.md | Missing scope note vs. user-personas/user-segmentation overlap (R07) | -3 | +| 71 | pm-market-research/skills/user-personas/SKILL.md | No worked example (R06) | -5 | +| 72 | pm-market-research/skills/user-personas/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 73 | pm-market-research/skills/user-segmentation/SKILL.md | No worked example (R06) | -5 | +| 74 | pm-market-research/skills/user-segmentation/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 75 | pm-ai-shipping/skills/shipping-artifacts/SKILL.md | Description is 585 chars, in the 500-800 penalty band (R04) | -5 | +| 76 | pm-ai-shipping/skills/shipping-artifacts/SKILL.md | No reciprocal scope note to intended-vs-implemented (R07) | -3 | +| 77 | pm-product-strategy/commands/business-model.md | No error-path handling for incomplete/ambiguous input (R17) | -5 | +| 78 | pm-product-strategy/commands/business-model.md | Vague quantifier "relevant" (R01) | -2 | +| 79 | pm-product-strategy/commands/pricing.md | Vague quantifier "relevant" (R01) | -2 | +| 80 | pm-product-strategy/commands/market-scan.md | No error-path handling for missing/unreliable market data (R17) | -5 | +| 81 | pm-product-strategy/commands/value-proposition.md | No error-path handling for incomplete product context (R17) | -5 | +| 82 | pm-product-strategy/commands/strategy.md | No error-path handling for missing/contradictory strategy inputs (R17) | -5 | +| 83 | pm-product-strategy/commands/strategy.md | Vague quantifier "some" (R01) | -2 | +| 84 | pm-product-strategy/skills/monetization-strategy/SKILL.md | No scope note vs. sibling pricing-strategy skill (R07) | -3 | +| 85 | pm-product-strategy/skills/startup-canvas/SKILL.md | Description gives only 2 trigger phrases, not 3+ (R04) | -15 | +| 86 | pm-product-strategy/skills/startup-canvas/SKILL.md | No worked example of a completed canvas (R06) | -5 | +| 87 | pm-execution/commands/pre-mortem.md | No empty-input handling — no plan/PRD example (R15) | -10 | +| 88 | pm-execution/commands/pre-mortem.md | No error-path handling for thin plan detail (R17) | -5 | +| 89 | pm-execution/commands/generate-data.md | No error-path handling for ambiguous schema requests (R17) | -5 | +| 90 | pm-execution/commands/red-team-prd.md | No empty-input handling (R15) | -10 | +| 91 | pm-execution/commands/red-team-prd.md | No error-path handling for a plan too thin to red-team (R17) | -5 | +| 92 | pm-execution/commands/transform-roadmap.md | No empty-input handling (R15) | -10 | +| 93 | pm-execution/commands/transform-roadmap.md | No error-path handling for unparseable roadmap uploads (R17) | -5 | +| 94 | pm-execution/commands/test-scenarios.md | No empty-input handling (R15) | -10 | +| 95 | pm-execution/commands/test-scenarios.md | No error-path handling for ambiguous acceptance criteria (R17) | -5 | +| 96 | pm-execution/commands/test-scenarios.md | Vague quantifier "correctly" (R01) | -2 | +| 97 | pm-execution/commands/sprint.md | No error-path handling across the three modes (R17) | -5 | +| 98 | pm-execution/commands/write-stories.md | No error-path handling for missing feature input (R17) | -5 | +| 99 | pm-execution/commands/write-stories.md | Vague quantifier "relevant" (R01) | -2 | +| 100 | pm-execution/commands/stakeholder-map.md | No error-path handling for sparse stakeholder info (R17) | -5 | +| 101 | pm-execution/skills/user-stories/SKILL.md | Missing scope note vs. job-stories/wwas (R07) | -3 | +| 102 | pm-execution/skills/user-stories/SKILL.md | Vague quantifier "correctly" (R01) | -2 | +| 103 | pm-execution/skills/retro/SKILL.md | Missing scope note vs. sprint-plan (R07) | -3 | +| 104 | pm-execution/skills/test-scenarios/SKILL.md | Missing scope note vs. sibling skills (R07) | -3 | +| 105 | pm-execution/skills/test-scenarios/SKILL.md | Vague quantifier "correctly" (R01) | -2 | +| 106 | pm-execution/skills/create-prd/SKILL.md | No worked example of a filled PRD (R06) | -5 | +| 107 | pm-execution/skills/create-prd/SKILL.md | Vague quantifier "relevant" (R01) | -2 | +| 108 | pm-execution/skills/wwas/SKILL.md | Missing scope note vs. user-stories/job-stories (R07) | -3 | +| 109 | pm-execution/skills/wwas/SKILL.md | Vague quantifier "correctly" (R01) | -2 | +| 110 | pm-execution/skills/wwas/SKILL.md | Vague quantifier "appropriately" (R01) | -2 | +| 111 | pm-execution/skills/job-stories/SKILL.md | Missing scope note vs. user-stories/wwas (R07) | -3 | +| 112 | pm-execution/skills/job-stories/SKILL.md | Vague quantifier "properly" (R01) | -2 | +| 113 | pm-execution/skills/brainstorm-okrs/SKILL.md | Vague quantifier "some" (R01) | -2 | +| 114 | pm-execution/skills/summarize-meeting/SKILL.md | Vague quantifier "as needed" (R01) | -2 | +| 115 | pm-execution/skills/sprint-plan/SKILL.md | Missing scope note vs. retro (R07) | -3 | +| 116 | pm-execution/skills/sprint-plan/SKILL.md | Vague quantifier "appropriately" (R01) | -2 | +| 117 | pm-execution/skills/dummy-dataset/SKILL.md | Vague quantifier "business-appropriate" (R01) | -2 | +| 118 | pm-execution/skills/stakeholder-map/SKILL.md | Vague quantifier "relevant" (R01) | -2 | +| 119 | pm-execution/skills/pre-mortem/SKILL.md | Missing scope note vs. strategy-red-team (R07) | -3 | +| 120 | pm-execution/skills/pre-mortem/SKILL.md | Vague quantifier "relevant" (R01) | -2 | +| 121 | pm-execution/skills/strategy-red-team/SKILL.md | No worked example of the red-team methodology (R06) | -5 | +| 122 | pm-product-discovery/commands/triage-requests.md | No error-path handling for malformed uploads (R17) | -5 | +| 123 | pm-product-discovery/commands/brainstorm.md | No error-path handling for unreadable uploaded context (R17) | -5 | +| 124 | pm-product-discovery/commands/discover.md | No error-path handling for bad uploaded research (R17) | -5 | +| 125 | pm-product-discovery/skills/analyze-feature-requests/SKILL.md | Opportunity Score formula given with no worked example (R06) | -5 | +| 126 | pm-product-discovery/skills/brainstorm-ideas-existing/SKILL.md | No scope note vs. brainstorm-ideas-new (R07) | -3 | +| 127 | pm-product-discovery/skills/prioritize-assumptions/SKILL.md | ICE/RICE/Risk formulas given with no worked example (R06) | -5 | +| 128 | pm-product-discovery/skills/brainstorm-experiments-new/SKILL.md | No scope note vs. brainstorm-experiments-existing (R07) | -3 | +| 129 | pm-product-discovery/skills/opportunity-solution-tree/SKILL.md | No single end-to-end worked OST example (R06) | -5 | +| 130 | pm-product-discovery/skills/identify-assumptions-existing/SKILL.md | No scope note vs. identify-assumptions-new (R07) | -3 | +| 131 | pm-product-discovery/skills/prioritize-features/SKILL.md | Opportunity/ICE/RICE formulas given with no worked example (R06) | -5 | +| 132 | pm-product-discovery/skills/identify-assumptions-new/SKILL.md | No scope note vs. identify-assumptions-existing (R07) | -3 | +| 133 | pm-product-discovery/skills/brainstorm-experiments-existing/SKILL.md | No scope note vs. brainstorm-experiments-new (R07) | -3 | +| 134 | pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md | No scope note vs. brainstorm-ideas-existing (R07) | -3 | + +## Cross-Component + +**1. `$ARGUMENTS` placeholder used in 54 of 58 audited skills, directly contradicting the repo's own CLAUDE.md.** The repo's `CLAUDE.md` states as a "Key Design Rule": *"Commands use a single `$ARGUMENTS` placeholder. Skills need no placeholders (they read context from the conversation)."* A repo-wide grep (`grep -rl '\$ARGUMENTS' */skills/**/SKILL.md`) found **54 of the repo's 68 SKILL.md files** (including 42 of the 58 audited in this pass) still contain a literal `$ARGUMENTS` placeholder — most commonly an `## Input Format` section reading `Use $ARGUMENTS to pass:` or a Context line like `You are analyzing A/B test results for **$ARGUMENTS**`. Since skills are auto-triggered by topic match (not invoked with positional arguments the way commands are), `$ARGUMENTS` in a skill body is very likely to render as a literal, unresolved string rather than being substituted — a real functional defect, not just a style nit. This is a single systemic contradiction between the project's own architecture doc and the majority of its skill files; representative affected files audited in this pass: `pm-data-analytics/skills/ab-test-analysis/SKILL.md`, `pm-go-to-market/skills/gtm-motions/SKILL.md`, `pm-go-to-market/skills/competitive-battlecard/SKILL.md`, `pm-go-to-market/skills/beachhead-segment/SKILL.md`, `pm-go-to-market/skills/ideal-customer-profile/SKILL.md`, `pm-go-to-market/skills/growth-loops/SKILL.md`, `pm-go-to-market/skills/gtm-strategy/SKILL.md`, `pm-marketing-growth/skills/{marketing-ideas,north-star-metric,positioning-ideas,product-name,value-prop-statements}/SKILL.md`, `pm-market-research/skills/{competitor-analysis,customer-journey-map,market-segments,market-sizing,sentiment-analysis,user-personas,user-segmentation}/SKILL.md`, `pm-execution/skills/{brainstorm-okrs,create-prd,outcome-roadmap,pre-mortem,release-notes,retro,sprint-plan,stakeholder-map,strategy-red-team,summarize-meeting}/SKILL.md`, `pm-product-discovery/skills/{analyze-feature-requests,brainstorm-experiments-existing,brainstorm-experiments-new,brainstorm-ideas-existing,brainstorm-ideas-new,identify-assumptions-existing,identify-assumptions-new,interview-script,metrics-dashboard,opportunity-solution-tree,prioritize-assumptions,prioritize-features,summarize-interview}/SKILL.md`, `pm-product-strategy/skills/{monetization-strategy,startup-canvas}/SKILL.md` (plus the 12 out-of-scope `pm-product-strategy` skills listed below). This is not scored against the numeric rubric supplied for this audit pass (no `$ARGUMENTS`-in-skill row exists in the given penalty tables) but is flagged here as the single highest-value, most reproducible fix available in the repo — a mechanical strip of the `## Input Format` / `Use $ARGUMENTS to pass` block from each affected SKILL.md. + +**2. Out-of-scope artifacts.** This audit pass scored exactly the 100 files enumerated in the audit task (42/42 commands — full coverage — plus 58 of 68 SKILL.md files). `pm-product-strategy/skills/` has 12 SKILL.md files on disk; only `monetization-strategy` and `startup-canvas` were in scope for this pass. The 10 not scored — `ansoff-matrix`, `business-model`, `lean-canvas`, `pestle-analysis`, `porters-five-forces`, `pricing-strategy`, `product-strategy`, `product-vision`, `swot-analysis`, `value-proposition` — are real, non-orphaned artifacts (all five `pm-product-strategy` commands reference them, and the repo's own `tests/test_consistency.py` / `validate_plugins.py` count them). They are not orphaned or broken; they were simply outside this audit's given file list and should be picked up in a follow-up pass. + +**3. No broken references found.** Every command's implicit skill/file references were checked against what agents observed while reading; no dangling cross-references, no stale counts, and no contradicting instructions were found beyond the `$ARGUMENTS` issue above. The repo ships its own consistency gate (`tests/test_consistency.py`, run in CI) that independently enforces README/marketplace/plugin.json count sync and `/plugin:command` reference validity — a strong existing safety net this audit did not need to duplicate. + +## Recommendation + +**CLEAR — submit PRs for all bugs and medium/low security fixes.** + +Security is clean (0 findings across all three execution surfaces). The 38 missing-`allowed-tools` bugs are each a mechanical, low-risk, one-line frontmatter addition and are safe to batch into PRs. The `$ARGUMENTS`-in-skills cross-component finding (54 files) is higher-value but slightly more judgment-dependent (removing vs. rewording the Input Format section) — worth a dedicated PR grouped by plugin rather than folding into the allowed-tools fix. Quality issues (134, mostly -2/-3/-5 vague-quantifier, missing-scope-note, and missing-worked-example findings) are informational and appropriate for a follow-up low-priority PR or left for the maintainer's own backlog. diff --git a/auditor/findings.jsonl b/auditor/findings.jsonl index 05519cdc1..f80103a4d 100644 --- a/auditor/findings.jsonl +++ b/auditor/findings.jsonl @@ -5304,6 +5304,232 @@ {"event":"finding","timestamp":"2026-08-05T07:03:41Z","audit_run_id":"30983032406","repo":"Shubhamsaboo/awesome-llm-apps","commit_sha":"779e9f9bcf87fa8cd95870a438b70b84e47d3173","fingerprint":"sha256:2bfa78d32cfaa8b1309799ea441db44cc498402ae36c506eadd79c6683afe525","category":"nl_quality","rule_id":"R01","file":"agent_skills/commit-archaeologist/SKILL.md","line":119,"severity":"low","confidence":"high","evidence":"line 119 'End by offering one relevant follow-up, such as:'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' used without measurable criteria","false_positive":false,"suggested_fix":"Replace with a measurable criterion or remove the qualifier"} {"event":"finding","timestamp":"2026-08-05T07:03:41Z","audit_run_id":"30983032406","repo":"Shubhamsaboo/awesome-llm-apps","commit_sha":"779e9f9bcf87fa8cd95870a438b70b84e47d3173","fingerprint":"sha256:7d87bda7727b4fa0dfc7962debaf47090c6b0f33b9e081b4e9ec8e2178840a9c","category":"nl_quality","rule_id":"R01","file":"agent_skills/dependency-doctor/SKILL.md","line":47,"severity":"low","confidence":"high","evidence":"line 47 'If no path is given and several manifests exist,'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'several' used without measurable criteria","false_positive":false,"suggested_fix":"Replace with a measurable criterion or remove the qualifier"} {"event":"finding","timestamp":"2026-08-05T07:03:41Z","audit_run_id":"30983032406","repo":"Shubhamsaboo/awesome-llm-apps","commit_sha":"779e9f9bcf87fa8cd95870a438b70b84e47d3173","fingerprint":"sha256:e56e87e8405e56c8cad8fb4336a237bb584a69792634fe21ac8fb8a216d7fd72","category":"cross_component","rule_id":"CC-terminology-drift","file":"generative_ui_agents/ai-mcp-app-builder/apps/mcp-use-server/.agent/skills","line":null,"severity":"low","confidence":"high","evidence":"chatgpt-app-builder and mcp-builder both reference 'mcp-app-builder' (singular); the live skill directory is 'mcp-apps-builder' (plural)","penalty":null,"pattern":"naming-mismatch","description":"Deprecation-notice naming drift between two stub skills and the actual replacement skill directory name","false_positive":false,"suggested_fix":"Standardize on mcp-apps-builder (the real directory name) in both deprecation notices"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:17180946ba6e109285b8ea4d7c772e759d6bb5cede1cce588611f46ef7119e18","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-marketing-growth/commands/market-product.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' (Write) but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output to a file but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0a53d931146b86467ca1a62bd0ecddaf73249e7eeb9ba08cff11ecac6e4c8406","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-marketing-growth/commands/north-star.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' (Write) but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output to a file but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b24653742ddd7849ff6fc1a095a058cd373cfb408aae9b30b362401e015891e9","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/privacy-policy.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer DOCX export.' but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving/exporting output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ccbecd743c34118013dd816958c2af5626f1e631d551aa863b8f3729b697dd41","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/proofread.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs accepting uploaded DOCX/PDF documents but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded documents but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:80814c85ec219b6af81f9ab343fd6f65371d2212ae9c01453f82dc218de1d44e","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/tailor-resume.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs accepting uploaded resume/JD files and URL fetch but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and fetching a URL but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, WebFetch to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:1a0f5ff775a706af9efcb20ea278f33a094b2a908f6b83bc2bfd6acfa219d6be","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs accepting uploaded PDF/DOCX resume but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading an uploaded resume but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f713f70e8187cd019613813d2d9d09a93f3632552470d9933c7f994677a26d68","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-toolkit/commands/draft-nda.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer to export as DOCX for signing.' but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving/exporting output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:6aeda50520ad7b74ba770a93d71afcac9d7720d1901c7f4c6f0c6a73a2d4a84e","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-data-analytics/commands/analyze-cohorts.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Process the data using Python (pandas)' and instructs saving markdown/CSV, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs Python processing and file saves but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Bash, Write, Read to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c09768c5541ae7d23d0858a7d70a9fa9f8733a91383bded122b93aa43d8c4510","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"medium","confidence":"high","evidence":"body instructs reading an uploaded schema (diagram, DDL) but frontmatter has no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded schema files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b727937ac7daecbb6bf689b5da97f43a45751da2422f147732e9a57aa0a59520","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-data-analytics/commands/analyze-test.md","line":null,"severity":"medium","confidence":"high","evidence":"Notes say 'generate the full analysis using Python with scipy.stats' and accept CSV/screenshot upload, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs Python analysis and file/screenshot reading but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Bash, Read to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a60cd60ca15a0bf4847bd6d7d32cdd9c1a633b83dc2b6e80c9d3e360a6518522","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-go-to-market/commands/plan-launch.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' and accepts PRD/deck upload, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded materials and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f1779d8838788d0c2f5ad82c16dd220ca4f5001c5daf99756a176d2de92768a1","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-go-to-market/commands/growth-strategy.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.' and accepts uploaded metrics data, no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded materials and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:98073b865848790d198e83c951909dc293fd197005cf14b58a470f54ae49d9aa","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-go-to-market/commands/battlecard.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Apply the competitive-battlecard skill with web research' and 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:28eedc48d4cf00d516f36cbe6a86fdd625e21098423b43d109dc008be8bdc73c","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Use web research to gather current information' and 'Save as markdown', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:44fecfd9fc1067d350e64fa6812c48d70b1680fb96117034b4090298ee8127f5","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-market-research/commands/analyze-feedback.md","line":null,"severity":"medium","confidence":"high","evidence":"body accepts CSV/Excel upload and instructs 'Save as markdown... also save enriched data as CSV', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0ae609cda8fc8e88a473b5f3f2820d5ab94d0ff180e6ebff750c304645b71b5d","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-market-research/commands/research-users.md","line":null,"severity":"medium","confidence":"high","evidence":"body accepts uploaded research files and instructs 'Save as markdown', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:849a0abb2285522e86f0ab63a8969e8ff9ea27904e3063bb3b0bf18fbd53e4d6","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-ai-shipping/commands/derive-tests.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Write the coverage map to documentation/tests.md and the full report to reports/test_plan_{timestamp}.md', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs writing report files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Grep, Glob, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b0facb6d21552d39f34bdb3a3b00d30ee56b8170a4d4bcb2e7c6fe910f0c77b0","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-ai-shipping/commands/document-app.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'produce the applicable documents in documentation/... fan out with parallel subagents', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs writing files and dispatching subagents but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Grep, Glob, Task, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:451dd3257e1d2fe33a85d4f1cac8bb7ea4daeb867cf22303d64bcba29075f0b2","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-ai-shipping/commands/ship-check.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Create or refresh CLAUDE.md... run them as parallel subagents', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs writing files and dispatching subagents but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write, Task to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:578c4903edb94bc01fa17f9d9401bb6ae6a887bb60471bef414c27f69141b42a","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/business-model.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer:', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e54116642271be30ab893abd7dbd8fb97d858b87f96dbb569e848c6ff9e39f9a","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/pricing.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Using web research:' and 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:79e63f4ef878a808167d3818536d173db869b2c98f85aec83c604f2f32b8000b","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/market-scan.md","line":null,"severity":"medium","confidence":"high","evidence":"Notes say 'Use web research to ground the analysis in current market data', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs web research but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: WebSearch, WebFetch, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:7bc034bdfac32ab3e342fbbdf32578a4b70f50b323f981e798190890216e3ee5","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/value-proposition.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown. Offer:', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:00fc51357a9ec6c973220ccc8083dffb0f17c872021483c4c5c5b53fcf34e3d3","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-strategy/commands/strategy.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ee65edfbaa7dcaea5f92105ec3915c27457edcf371d837d4e10569cdd8f8d754","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/write-prd.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save the PRD as a markdown file to the user's workspace.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:483421e53c15a05b5bc44b46d5b89548b40c17f7d7df2c81461a029b7bff6c39","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/stakeholder-map.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:6cbf3348dbb609722c6934a350b9b8ca003361bf438d45fcd62506719b18b5f0","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/pre-mortem.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9ffed7f486db841541e77229dd4b31c807d290937fe5ef95daee1661595c88b3","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/generate-data.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Execute the script and produce the output file' and 'Save data file and generator script', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs executing a script and writing files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Bash, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:aabafeb3b84f44bb041078048bc0f455896520dc57456a98fcfd4ca6d4f12118","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/meeting-notes.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c429b067ba786008df3814606a1e62dd2f3794fbe20bc49f6bca6a37caf6d142","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/transform-roadmap.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as a markdown file.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a1e12dc86857710aa4af86a3488494ec0b0053c638edfe22e37e43665f3a666c","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:87c914a4a5c4f43cbcb7efdfe20944d7584ad4885d48f1095381b9968a4661b1","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/sprint.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown and offer to format for different channels', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a9dbb3c17fdbac4fd3b207abb445489b762e822d9804e7b74f5574430b2efdca","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-execution/commands/write-stories.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as markdown.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b486cef2ceb88fec9152b672430528e74ca33ba76423b712e2cf198c18b24194","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/setup-metrics.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save as a markdown file to the user's workspace.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9293c0a5f380f1e23262f21bd41fa92b1c9e4c93460e33e5c9e0d01e66eb084f","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/triage-requests.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save the report as a markdown file... Output the enriched data as a downloadable CSV', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and writing output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:55ee4e65fe648f95bc0e223c3b10a572e787be5f65e751b67e373e9c6b3473a8","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/brainstorm.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Accept context from uploaded files (PRDs, research docs, strategy decks)', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:80beacb6c89e56754634f9b345cee3f5793a4f1f7c2d21b98c5e56fb3a110235","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/interview.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Save the summary as a markdown file.', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:5318a52a86792ecb3c90be3010bf7cd9741c3c79b3dced32d75765490a379725","category":"bug","rule_id":"BUG-undeclared-tool","file":"pm-product-discovery/commands/discover.md","line":null,"severity":"medium","confidence":"high","evidence":"body says 'Accept context from uploaded files' and 'Save the plan as a markdown file', no allowed-tools key","penalty":-5,"pattern":"missing-allowed-tools","description":"Command instructs reading uploaded files and saving output but declares no allowed-tools frontmatter","false_positive":false,"suggested_fix":"Add allowed-tools: Read, Write to frontmatter"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:809fda482120eaa88be2790f62e455242946d2a40bc386a0752a75b595f6d3e0","category":"nl_quality","rule_id":"R17","file":"pm-marketing-growth/commands/market-product.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling defined for missing or ambiguous product context","false_positive":false,"suggested_fix":"Add a note on handling unclear or insufficient product context"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:30d8cb8715048d2845e67bcb1d56455c90b8cb18a756a15b1d75f7db09ba377e","category":"nl_quality","rule_id":"R17","file":"pm-marketing-growth/commands/north-star.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling defined for missing or ambiguous metrics data","false_positive":false,"suggested_fix":"Add a note on handling unavailable metrics data"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:03d8c21cd6045cccebee1b028c839811292e71d593ef43959fd510baf8ce37e9","category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/privacy-policy.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling defined for missing or ambiguous data-handling context","false_positive":false,"suggested_fix":"Add a note on handling incomplete data-handling details"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0df4c15f5abc7a1961187d14a4e297708d40696bcdbc7f465862645442ecff1b","category":"nl_quality","rule_id":"R15","file":"pm-toolkit/commands/proofread.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling described for invocation with no text provided","false_positive":false,"suggested_fix":"Add a step asking the user to paste or upload text if none was provided"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:885ced692ec6b55e9b6a317bd819649c63b6d6be12db31bac00154e5582ca9fd","category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/proofread.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for unreadable or corrupted uploaded documents","false_positive":false,"suggested_fix":"Add a note on handling unreadable or empty documents"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8d4e5d2b34acebb445524995cb9f0c5f42b7204bb325a490c5e90eb751528915","category":"nl_quality","rule_id":"R01","file":"pm-toolkit/commands/tailor-resume.md","line":null,"severity":"low","confidence":"high","evidence":"'emphasize JD-relevant accomplishments'; 'Prioritize the most relevant experience'","penalty":-4,"pattern":"vague-quantifier","description":"Two unqualified uses of 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Replace with specific criteria, e.g. experience matching the JD's top listed requirements"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:37e8ce1524c75ac86481c0f44671904b04de3db783687fd4b7e1f5bb5811af16","category":"nl_quality","rule_id":"R15","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling described for invocation with no resume provided","false_positive":false,"suggested_fix":"Add a step asking the user to paste or upload a resume if none was provided"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a0e8873761e455be430abd8cbf26b9482406cc4f4c226332325819c7a579407d","category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for unreadable or corrupted resume files","false_positive":false,"suggested_fix":"Add a note on handling unreadable or empty resumes"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:3e26ed5942b05dd8ace19a4d36df908a5f93d9174abd692bbcd3071b991151c2","category":"nl_quality","rule_id":"R01","file":"pm-toolkit/commands/review-resume.md","line":null,"severity":"low","confidence":"high","evidence":"'[PM-relevant keywords missing...]'; 'mention relevant keywords naturally'","penalty":-4,"pattern":"vague-quantifier","description":"Two unqualified uses of 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Tie to a concrete standard tied to the job posting or PM keyword list"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:01fe708cd35fbc628d000122dee81cd5f3e5a424342710efcac24e9239f595c3","category":"nl_quality","rule_id":"R17","file":"pm-toolkit/commands/draft-nda.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or ambiguous party/jurisdiction details","false_positive":false,"suggested_fix":"Add a note on handling incomplete party or jurisdiction details"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:61c86a01f38ddecc1fdb24f1b6b6778e4e779aecbc7ea21ad82ba121dd8fcb42","category":"nl_quality","rule_id":"R01","file":"pm-toolkit/commands/draft-nda.md","line":null,"severity":"low","confidence":"medium","evidence":"description: '...with jurisdiction-appropriate clauses'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'jurisdiction-appropriate' in frontmatter description","false_positive":false,"suggested_fix":"Name the specific jurisdictional criteria or drop the qualifier"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8ad4fe33754308280fdbd3aa454471e86dd5d6ada76f35aab8bb22f6cea1203c","category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/positioning-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills marketing-ideas, north-star-metric, value-prop-statements, product-name","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing positioning from adjacent marketing skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:00d9d219fd3a96354f29e9ed918924040386b20e233d755be137ff42ee02b6bd","category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/north-star-metric/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing NSM from adjacent metrics/marketing skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0fc701a32e2a6362dbf2cb00b7c070fce450c0a7752dce1f41a6672dd734d5db","category":"nl_quality","rule_id":"R06","file":"pm-marketing-growth/skills/marketing-ideas/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"Channel/Core Message/Why It Works/Cost Efficiency fields defined but no sample output shown","penalty":-5,"pattern":"no-worked-example","description":"Structured idea-generation format provided with zero worked examples of an actual campaign idea","false_positive":false,"suggested_fix":"Add one worked example idea illustrating the four fields"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:4a836e232f86ed3e68a94057d707809cbff55c960b0b144a1baafb744367f5d6","category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/marketing-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing marketing-ideas from adjacent skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:fedc0317931a1d6817a7ac815fa0c19eb31f07c802c8afcfc47195a8fea547e6","category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/value-prop-statements/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing value-prop copy from adjacent marketing skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e6daac518be1fa3c3d4301f12cb05d7ce758104c31ad748eebdd55ee8133b5ff","category":"nl_quality","rule_id":"R06","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"Name/Rationale/Brand Fit/Memorability/Domain fields defined but no sample output shown","penalty":-5,"pattern":"no-worked-example","description":"Structured naming format provided with zero worked examples of an actual proposed name","false_positive":false,"suggested_fix":"Add one worked example name illustrating the five fields"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:4ecf859ef3e9723de67e71da06b67eb243cdbc7c0c9a3d19f15831ff2c99d8cf","category":"nl_quality","rule_id":"R07","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing naming from adjacent skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:bb78a48d6e6a18ab27db606f98ba4445a2edc2e12d500f9041d57f0dc236b16f","category":"nl_quality","rule_id":"R01","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'Relevant to the product's core value and use case'","penalty":-2,"pattern":"vague-quantifier","description":"Unqualified use of 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Replace with a specific criterion tied to the stated value prop"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b273c87f0028025beb97c94d7f85249ed20d865546acd4667214137ed5bf3ba3","category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/grammar-check/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills privacy-policy, review-resume, draft-nda","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing grammar-check from adjacent toolkit skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:1c734bdd2f84a485f511512c56ae5b9212804ef26010e4c27eb738c95c03fafa","category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/privacy-policy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills grammar-check, review-resume, draft-nda","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing privacy-policy drafting from adjacent legal/toolkit skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9d1d1ca5169c04785136d9993860e481a0396f0afd6c19fc4e1918c3f6b7e7ad","category":"nl_quality","rule_id":"R01","file":"pm-toolkit/skills/review-resume/SKILL.md","line":null,"severity":"medium","confidence":"high","evidence":"'relevant PM experience level'; 'highlight relevant experience'; 'most relevant experience first'; 'relevant coursework, internships, projects'; 'Include relevant coursework'","penalty":-10,"pattern":"vague-quantifier","description":"Five separate instructions use 'relevant' as the sole selection criterion without defining what makes something relevant","false_positive":false,"suggested_fix":"Tie each instance to a concrete standard (e.g. matches JD's listed requirements)"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:29a6885625487489c629507efde5631221e0ac6a922298234dcb2b9dc1bc09ad","category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/review-resume/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing resume review from adjacent toolkit skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a16550b30c35386a619c250495828072079518ee80fff81e18dadf8f678974dd","category":"nl_quality","rule_id":"R06","file":"pm-toolkit/skills/draft-nda/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"'Where helpful, include examples of what is/isn't confidential information' — no actual example shown","penalty":-5,"pattern":"no-worked-example","description":"Legal-drafting skill instructs including examples in output but never demonstrates one itself","false_positive":false,"suggested_fix":"Add one worked example confidentiality-definition clause"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ad0ef93867f051e1db712bafac57ede3a1d8ffcf34abb2c6abd1e513054bb180","category":"nl_quality","rule_id":"R07","file":"pm-toolkit/skills/draft-nda/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills in the same plugin","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add a scope note distinguishing NDA drafting from adjacent legal/toolkit skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b3ea71dcf041d10ca52f967fde7d6ba4b23fd8d6f6389606d85b2931806f4736","category":"nl_quality","rule_id":"R01","file":"pm-toolkit/skills/draft-nda/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'have a lawyer in the relevant jurisdiction review'; 'Some industries (tech, pharma, finance) have specific NDA conventions'","penalty":-4,"pattern":"vague-quantifier","description":"Two unqualified vague quantifiers ('relevant', 'some')","false_positive":false,"suggested_fix":"Name the jurisdiction/industry criteria explicitly"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:caf357cd0a05978c5c9c374389189c9df2cc7a40b25b27a180de62febd6a2239","category":"nl_quality","rule_id":"R15","file":"pm-data-analytics/commands/analyze-cohorts.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation (no data and no description)","false_positive":false,"suggested_fix":"Add a branch for zero input asking what the user wants to analyze"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8e596fe21945a13205f69d7f67a6288921dae1496467bb4adc159e2ddc1e32c8","category":"nl_quality","rule_id":"R17","file":"pm-data-analytics/commands/analyze-cohorts.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed or unreadable uploaded data","false_positive":false,"suggested_fix":"Add a check-and-flag step for bad/missing columns"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:47b66354830187ad1bf4406a138d256bf01bc8d90b1fd82b52c36b5af3a9e1a9","category":"nl_quality","rule_id":"R15","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation with no question and no schema","false_positive":false,"suggested_fix":"Add fallback: if no question given, ask what data the user wants"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9b9177f4e5533f56989b00774c402a4b300b58ceae1cd10e30beeceecabb3690","category":"nl_quality","rule_id":"R17","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed or unreadable schema uploads","false_positive":false,"suggested_fix":"Add explicit handling for unreadable/corrupt schema files"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:611a9b99b0c2599b3229b9305b81aab669850d0db59f80d6827019ce0cd2e27e","category":"nl_quality","rule_id":"R01","file":"pm-data-analytics/commands/write-query.md","line":null,"severity":"low","confidence":"high","evidence":"'Infer a reasonable schema from the question and ask the user to confirm'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'reasonable' used to modify an actual instruction","false_positive":false,"suggested_fix":"Replace with concrete criteria, e.g. infer using common SaaS entities and confirm with the user"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9a96a0e2917743c18d7bd3348eddf86568866fa5899a8af955f230403474fd9b","category":"nl_quality","rule_id":"R15","file":"pm-data-analytics/commands/analyze-test.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation (no data, no description)","false_positive":false,"suggested_fix":"Add fallback prompting the user for at least summary stats"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a3f4082b1132f6ce6c72248b620c51c8f699deca920adec627b19a4e16109df9","category":"nl_quality","rule_id":"R01","file":"pm-data-analytics/commands/analyze-test.md","line":null,"severity":"low","confidence":"high","evidence":"'Was sample size sufficient? (run a power analysis)'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'sufficient' used to modify an actual instruction","false_positive":false,"suggested_fix":"Replace with a concrete threshold, e.g. meets required n for 80% power"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d167d8800d170a513c11e42e372c97c7a633358803c05f519d66e2f11d003a2b","category":"nl_quality","rule_id":"R15","file":"pm-go-to-market/commands/plan-launch.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation","false_positive":false,"suggested_fix":"Add fallback: if nothing specified, ask what is being launched"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:542956dabc7a49a7700590cdfb352fc0dde39f7f7b203ae20f85d8071d10cbff","category":"nl_quality","rule_id":"R17","file":"pm-go-to-market/commands/plan-launch.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for an unreadable/unparseable uploaded PRD or deck","false_positive":false,"suggested_fix":"Add a note to flag and ask for re-upload if the file can't be parsed"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:03acdd4729a5931efd8976aad156c57cf51b8a05a32e8087d2f1f54f87d324f3","category":"nl_quality","rule_id":"R15","file":"pm-go-to-market/commands/growth-strategy.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation","false_positive":false,"suggested_fix":"Add fallback: if no product/challenge is described, ask for one"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0d899273ef86c88438e5be7d84c9bec7ed2b376697eb888b9d6cac5ba61a7390","category":"nl_quality","rule_id":"R17","file":"pm-go-to-market/commands/growth-strategy.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or bad uploaded metrics data","false_positive":false,"suggested_fix":"Add a check for missing/malformed metrics data"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c8a99c8ce0e20134e02d0100e97a3b877d28b6e90ebc8e3501fe150e27f333f9","category":"nl_quality","rule_id":"R15","file":"pm-go-to-market/commands/battlecard.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit handling for a totally empty invocation (no competitor named)","false_positive":false,"suggested_fix":"Add fallback: if no competitor is named, ask which one"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9a7ce6fc97b93cfb61f2ea899b86b729a4b5248b2eca8aa26dac881974b9b8b0","category":"nl_quality","rule_id":"R17","file":"pm-go-to-market/commands/battlecard.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or unreadable uploaded competitor materials","false_positive":false,"suggested_fix":"Add a check for missing/malformed uploaded materials"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e8e770dead3e49f2a0abe48961c15fd0d6106c2f446e8d5c23f1f66ee19919eb","category":"nl_quality","rule_id":"R07","file":"pm-data-analytics/skills/sql-queries/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills ab-test-analysis, cohort-analysis","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For retention analysis, see cohort-analysis'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:71a84b6a642f0e80a8dffae405a358523454b3f8945552b7ec575b62c17a71f5","category":"nl_quality","rule_id":"R07","file":"pm-data-analytics/skills/ab-test-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills sql-queries, cohort-analysis","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For query generation, see sql-queries'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0a5c2be665aaa7e58ff2c4ba89326aaeb9c08e9d5334e4b826aa4bd69f39949c","category":"nl_quality","rule_id":"R07","file":"pm-data-analytics/skills/cohort-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite sibling skills sql-queries, ab-test-analysis","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For query generation, see sql-queries'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a5fe8ba048f6368816dce495e63789b9b4b53b17567786eb6353036313a6bce9","category":"nl_quality","rule_id":"R01","file":"pm-data-analytics/skills/cohort-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'5. Sufficient data: At least 3-4 cohorts for meaningful pattern identification'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'Sufficient' used as a heading modifying an actual instruction","false_positive":false,"suggested_fix":"Reword heading to 'Minimum data' and keep the concrete threshold"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:088441a4c67ad255e5b72f3ddd2518a99b7f5f6c759ed272b475008052ef0f96","category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/gtm-motions/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"7 motion-type sections list tools/tactics only, no worked example line","penalty":-5,"pattern":"no-worked-example","description":"Complex 7-motion-type framework explained with no concrete worked example","false_positive":false,"suggested_fix":"Add a one-line real/illustrative example per motion type"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c3838d4d5b3d86a07695f9f10e86339ace7c3b71035e959ea2755f6cdc50223b","category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/gtm-motions/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling growth-loops","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling growth-loops (both dispatched by /growth-strategy)","false_positive":false,"suggested_fix":"Add e.g. 'For product-native loops, see growth-loops'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0e012e5c127ddfeb986a3d004b378ff981b9210fcb3c8ea00f6a101622b22d6f","category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/competitive-battlecard/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite several related sibling skills","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling skills in the same plugin","false_positive":false,"suggested_fix":"Add e.g. 'For overall launch strategy, see gtm-strategy'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:81873cd244470b7e2f83ef417f5e5ed5472138ebc0c23730c66f78d597e97285","category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/beachhead-segment/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"Key Evaluation Criteria and How It Works sections have no worked example","penalty":-5,"pattern":"no-worked-example","description":"Complex 4-criteria framework explained abstractly with no worked example","false_positive":false,"suggested_fix":"Add a short worked example of a product picking a beachhead segment"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f4246bc0d07366bc44ec30c54fef42032f40d304a174e03da8abc1ded59ad024","category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/beachhead-segment/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling ideal-customer-profile","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling ideal-customer-profile","false_positive":false,"suggested_fix":"Add e.g. 'For full ICP definition, see ideal-customer-profile'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a2ec582753ca378923eb808ae4ced3b1746d01d0ff61a18dac881a6cdc40074a","category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/ideal-customer-profile/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"ICP Framework Components and How It Works sections have no worked example","penalty":-5,"pattern":"no-worked-example","description":"Complex demographics/JTBD/pain-points framework explained abstractly with no worked example","false_positive":false,"suggested_fix":"Add a short worked ICP example"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ab777b3674e08bf7b27040890361ab44abf8dc831b24c083755bf13799edfbdb","category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/ideal-customer-profile/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling beachhead-segment","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling beachhead-segment","false_positive":false,"suggested_fix":"Add e.g. 'For first-market selection, see beachhead-segment'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:84df95c267ab7a0bd489a09792817df2b0309112206cdad58a9d7ff1395faa4b","category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/growth-loops/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"no cross-reference line despite closely related sibling gtm-motions","penalty":-3,"pattern":"missing-scope-note","description":"No scope note vs. sibling gtm-motions (both dispatched by /growth-strategy)","false_positive":false,"suggested_fix":"Add e.g. 'For acquisition channels, see gtm-motions'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:80457661595a4b8c1c909b269b45b61ea6b63408eb5f4a7d893eb6c241a8d1a0","category":"nl_quality","rule_id":"R06","file":"pm-go-to-market/skills/gtm-strategy/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"5-step 'How It Works' section has no worked example","penalty":-5,"pattern":"no-worked-example","description":"Multi-step GTM strategy framework explained abstractly with no worked example","false_positive":false,"suggested_fix":"Add a short worked launch example"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9766fe574680a4114f2adb5e34283058d6f97f64ef2c9243626cfff77fc1c9ca","category":"nl_quality","rule_id":"R07","file":"pm-go-to-market/skills/gtm-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"umbrella skill for beachhead-segment, ideal-customer-profile, gtm-motions, growth-loops, competitive-battlecard with no cross-reference line","penalty":-3,"pattern":"missing-scope-note","description":"Missing scope note despite being the umbrella skill for 5 closely related siblings","false_positive":false,"suggested_fix":"Add e.g. 'For channel selection, see gtm-motions. For first segment, see beachhead-segment'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:706fa26371bc9f21f53ce3add1bfe2f4dbf6198543aff3a58623c2da3173caf4","category":"nl_quality","rule_id":"R15","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit fallback stated for empty invocation","false_positive":false,"suggested_fix":"Add 'If no product/market given, ask before proceeding'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:4b79571514f1e95320cf4a6862ca067148d383cfa848be57a6cd3b2dba0b4440","category":"nl_quality","rule_id":"R17","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or thin competitor data","false_positive":false,"suggested_fix":"Add a line on low-data handling"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:7138247d091cf8e9d15ac0428222662a92a812dce86a570ae77404fac6793deb","category":"nl_quality","rule_id":"R01","file":"pm-market-research/commands/competitive-analysis.md","line":null,"severity":"low","confidence":"high","evidence":"'Note emerging/disruptive players if relevant'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' modifying an actual instruction","false_positive":false,"suggested_fix":"Replace with a measurable criterion (e.g. funding raised in last 12 months)"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:6041f31f00ac3c22d09325390e10c409c32dbb5745f293aecbda579d87750f39","category":"nl_quality","rule_id":"R15","file":"pm-market-research/commands/analyze-feedback.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No explicit fallback for empty/no feedback data provided","false_positive":false,"suggested_fix":"Add explicit 'if no data is provided' branch"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8c50fd20c672a4b870934c0595ec742eca439a0d80476cb3e6285017866c1405","category":"nl_quality","rule_id":"R16","file":"pm-ai-shipping/commands/document-app.md","line":null,"severity":"medium","confidence":"high","evidence":"Step 3 says 'Summarize what was created or updated...' with no template or code block, unlike sibling commands in this plugin","penalty":-10,"pattern":"missing-output-format","description":"No output format/template is defined for the report","false_positive":false,"suggested_fix":"Add an explicit Output template block like the other pm-ai-shipping commands"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d47d62a9bc3dfde68ea4d0cd75019482982cdf2e8ab66692f6284cba5eef3b61","category":"nl_quality","rule_id":"R01","file":"pm-ai-shipping/commands/document-app.md","line":null,"severity":"low","confidence":"high","evidence":"'the permission-relevant journeys'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Define which journeys qualify"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0bd00ecc85abfd97c664cfff7af4d70bbf9407eba1972b6595476ea5a678b17a","category":"nl_quality","rule_id":"R17","file":"pm-ai-shipping/commands/performance-audit-static.md","line":null,"severity":"low","confidence":"medium","evidence":"unlike security-audit-static's 'if docs are absent, recommend /document-app first', no equivalent fallback here","penalty":-5,"pattern":"no-error-path","description":"No explicit handling for a missing/absent prerequisite","false_positive":false,"suggested_fix":"Add a line covering the case where scope has nothing to audit"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:72fd1eb5a00b0a9f38bf80d8830420c588e0d94dc3cb8b34bc0452c8e8854513","category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/market-segments/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example segment","false_positive":false,"suggested_fix":"Add one short worked example segment"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:154ac5454f1a816d4e3b7c7ea7da8b0b73d12f3234b2aab8e9fc51b20b0d86b6","category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/market-segments/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling skills user-segmentation, market-sizing","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:008a340e5e1512c36253f981071c37d0d5c0e90babce5569295111836f4b8873","category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/competitor-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example competitor profile","false_positive":false,"suggested_fix":"Add one short worked example competitor profile"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:90b797e2b3ff70f565759e198b126460dd2da95e5fac90184670eefaebe1bc70","category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/competitor-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling market-research skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c57aaf82f2974beea730aa2457faedbd29c6ff9571784fd32ece8774ff2a0f88","category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure has section headers and an empty summary table, no worked numeric example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled numeric TAM/SAM/SOM example","false_positive":false,"suggested_fix":"Add one short worked TAM/SAM/SOM example"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:fbb101627b80b1c165b57a78320d537ac11fbac0c8c73dcaef71e902fbc5f710","category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling market-research skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9fd0c48ec9dd3c3ee4290fe3801e79da7bedc7e7bb3765c94e83033feffb0acb","category":"nl_quality","rule_id":"R01","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"'narrow to the relevant slice'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' modifying an actual instruction","false_positive":false,"suggested_fix":"Replace with a measurable narrowing criterion"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:dee871b69a8a03ec70ead8823a074c1a2746e27c336c07059cd08c49ca41e58e","category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/customer-journey-map/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling market-research skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:01cc72780b0108bfbd187e53d0657b551d61c64c26985732b0c7716748310af9","category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/sentiment-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example segment with a sentiment score","false_positive":false,"suggested_fix":"Add one short worked example segment with a sentiment score"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:5562aa0e91980fd1a47fa98a56366fe9987c13ba02eed277f5dcd1067c394a93","category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/sentiment-analysis/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with user-personas, user-segmentation","penalty":-3,"pattern":"missing-scope-note","description":"No scope note clarifying feedback-driven sentiment scope vs. persona/segmentation skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ff1acdbce13dc7894d2f68382122ba525e10fc84c8f9928e6e492f8ea917efe3","category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/user-personas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example persona","false_positive":false,"suggested_fix":"Add one short worked example persona"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:1b1f786b5f32abf1868cd139e540f1f2a7be444113dbf6781b78c9ad60e08182","category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/user-personas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with sentiment-analysis, user-segmentation","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from overlapping sibling skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:70c7d176e7ae98cbf69228f98d88828c57d9e92140b03e844956f5af8e96f4aa","category":"nl_quality","rule_id":"R06","file":"pm-market-research/skills/user-segmentation/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Output Structure lists section headers only, no filled example","penalty":-5,"pattern":"no-worked-example","description":"No worked/filled example segment","false_positive":false,"suggested_fix":"Add one short worked example segment"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e5288e5ead994305edea3f638bef82419b5598136fa434ffe894ffcf76457255","category":"nl_quality","rule_id":"R07","file":"pm-market-research/skills/user-segmentation/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with market-segments, user-personas","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from overlapping sibling skills","false_positive":false,"suggested_fix":"Add a one-line scope note"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c1eb3ee6eaf00ffb6527aa8c58267f02a84e97547f8c444dc31da0ac7eacb687","category":"nl_quality","rule_id":"R04","file":"pm-ai-shipping/skills/shipping-artifacts/SKILL.md","line":3,"severity":"low","confidence":"high","evidence":"frontmatter description measured at 585 characters","penalty":-5,"pattern":"description-length-band","description":"Frontmatter description is 585 characters, in the 500-800 penalty band","false_positive":false,"suggested_fix":"Trim description to under 500 chars"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0e751a0b7dd862c3f0a7779a5ea497530c9f470cc9a22e1f2a396bb6fd279e45","category":"nl_quality","rule_id":"R07","file":"pm-ai-shipping/skills/shipping-artifacts/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"intended-vs-implemented references this skill but this skill does not reciprocate","penalty":-3,"pattern":"missing-scope-note","description":"No reciprocal scope note pointing to sibling intended-vs-implemented","false_positive":false,"suggested_fix":"Add a line like 'For auditing the gap between docs and code, see intended-vs-implemented'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:482be7fb1ad6b207ea6ebcd0eb2a702a0260ce7d1a936ab20c75fbb7150d628b","category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/business-model.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/unclear input across the four modes","false_positive":false,"suggested_fix":"Add a brief note on handling incomplete/ambiguous product descriptions"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:7f7a62c6d48fcfede5929944c0da3e604190def35f5ed036786f488266cf143a","category":"nl_quality","rule_id":"R01","file":"pm-product-strategy/commands/business-model.md","line":null,"severity":"low","confidence":"high","evidence":"'Apply the relevant skill(s) as described above.'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Name the specific skill instead of 'relevant'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:cccc6c040099a1229e981461373d1cfb30303765e53f76837f496fd6c46465a5","category":"nl_quality","rule_id":"R01","file":"pm-product-strategy/commands/pricing.md","line":null,"severity":"low","confidence":"high","evidence":"'For each relevant model: pros, cons, fit for your product...'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Clarify which models count as relevant (e.g. matching the product's distribution model)"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ece572e7c88383b7f89b66ee5d529cb11ba5eeb875b5578c78b834c76e16d69c","category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/market-scan.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing or unreliable market data","false_positive":false,"suggested_fix":"Add guidance for proceeding with limited/uncertain data"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f04c871fcc93718e7f7b40284281f6eb6e5b1218da19ef386edad69348b99980","category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/value-proposition.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/incomplete product context","false_positive":false,"suggested_fix":"Add a brief note on handling sparse product descriptions"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:69712b63301beb4f7385dce62c7bd5e3f1622d5636f6cad10ceb7953f6295cbc","category":"nl_quality","rule_id":"R17","file":"pm-product-strategy/commands/strategy.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/contradictory strategy inputs","false_positive":false,"suggested_fix":"Add explicit guidance for handling missing product context"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:189e0baefc0b8536bc4cbc366436187f7862b7dedfc502cdbd24ac36ea5066c8","category":"nl_quality","rule_id":"R01","file":"pm-product-strategy/commands/strategy.md","line":null,"severity":"low","confidence":"high","evidence":"'If the product is early-stage, some sections will be hypotheses'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'some' with no measurable criteria","false_positive":false,"suggested_fix":"Specify which sections typically remain hypotheses"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:92126873fbd841fbdcd5a1f8f6633cb0120d1371e7aed8110fab7139a2bcd6b6","category":"nl_quality","rule_id":"R07","file":"pm-product-strategy/skills/monetization-strategy/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"overlaps with out-of-scope sibling pricing-strategy","penalty":-3,"pattern":"missing-scope-note","description":"No scope note pointing to sibling pricing-strategy skill despite clear overlap","false_positive":false,"suggested_fix":"Add a one-line scope note distinguishing monetization-strategy from pricing-strategy"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:6d17f6ddec5d2c2ff8a3335d1804a848d7df1ea0a427a4e7aa529d5a423f7cb8","category":"nl_quality","rule_id":"R04","file":"pm-product-strategy/skills/startup-canvas/SKILL.md","line":3,"severity":"medium","confidence":"medium","evidence":"'...Use when launching a new product or evaluating a startup concept.'","penalty":-15,"pattern":"generic-description","description":"Frontmatter description gives only two specific trigger phrases rather than 3+","false_positive":false,"suggested_fix":"Add a third concrete trigger phrase"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:63b9ef1cbfca3a9892170cae2c3678567161723eec8e42664c331a9cc86b6ccd","category":"nl_quality","rule_id":"R06","file":"pm-product-strategy/skills/startup-canvas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"Domain Context and Template sections contain only placeholders","penalty":-5,"pattern":"no-worked-example","description":"Complex framework-comparison concepts explained with no worked example of a filled canvas","false_positive":false,"suggested_fix":"Add one short worked example of a completed Startup Canvas"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:5cae0bdd31ef50c2af9d6fa0006e9164a6a270f5a772e3d465fa2c743394339f","category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/pre-mortem.md","line":null,"severity":"medium","confidence":"medium","evidence":"no fallback if nothing at all is provided","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no plan/PRD at all","false_positive":false,"suggested_fix":"Add explicit fallback, e.g. ask what's being launched"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:26cb6d05a12bd85fd97b82e499e98bd32d28615cfce5f649bfc992a7440eb92c","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/pre-mortem.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/thin plan detail","false_positive":false,"suggested_fix":"Add explicit guidance for proceeding with a thin/underspecified plan"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d2a6317958f92782fc4ccaf778134d248a75d11b51738855df5ea27c4531fb59","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/generate-data.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for an unclear/incomplete schema request","false_positive":false,"suggested_fix":"Add guidance for handling ambiguous schema requests"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e3187e9aed1fac5ba603874b5f49d5e8a14ad7c4c679145053404156ffdf247b","category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/red-team-prd.md","line":null,"severity":"medium","confidence":"medium","evidence":"no fallback when nothing at all is supplied","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no plan/doc at all","false_positive":false,"suggested_fix":"Add explicit handling, e.g. ask what's being evaluated"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d5afa051fb6fb85d88ec7a954c91bea3d506994c954dc8de98b53b8bc6213391","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/red-team-prd.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for a plan too thin to extract load-bearing claims from","false_positive":false,"suggested_fix":"Add guidance for handling a plan too thin to red-team"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:84cee38a7002d679837c9dc6970389f1ec6e2087dbff88b9dde2d8ba7204ea0b","category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/transform-roadmap.md","line":null,"severity":"medium","confidence":"medium","evidence":"Step 1 assumes content is already supplied","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no roadmap content at all","false_positive":false,"suggested_fix":"Add explicit fallback asking for the feature list or backlog"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d38f0fcf924d33e7d80e8451403b790214be7e321fe5ee23ca62f403bb7153fd","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/transform-roadmap.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed/unparseable roadmap input","false_positive":false,"suggested_fix":"Add guidance for handling unparseable roadmap uploads"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:3cdcc0c8053eae31c0448d0fbb27956a26eb1279f4a0622fcdb8ff26ab9aa5f8","category":"nl_quality","rule_id":"R15","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"medium","confidence":"medium","evidence":"","penalty":-10,"pattern":"no-empty-input-handling","description":"No handling defined for invocation with no user stories/spec at all","false_positive":false,"suggested_fix":"Add explicit fallback, e.g. ask what feature to test"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:3b6b28f7f77aafd04e7a08302c431118028016d0dde80dfe110da3ab527132dc","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/ambiguous acceptance criteria","false_positive":false,"suggested_fix":"Add guidance for handling requirements with no clear acceptance criteria"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e4f4e14102236d7081367252f0898a5fa0fb80742ad8e6160fd3abbc1ed847ba","category":"nl_quality","rule_id":"R01","file":"pm-execution/commands/test-scenarios.md","line":null,"severity":"low","confidence":"high","evidence":"'Happy Path Scenarios: The expected user flow works correctly'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' with no measurable criteria","false_positive":false,"suggested_fix":"Define what 'works correctly' means relative to acceptance criteria"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8c78b78f42dfa37eaa5c652f3d944e062a0b8a0721b7d9a9443766917e80c0b1","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/sprint.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/incomplete input in any of the three modes","false_positive":false,"suggested_fix":"Add a brief fallback note per mode for sparse input"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:21c7bcf12dade748a978a34391f4ad8469845e9ff784aa99290d1b42bd2550de","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/write-stories.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/unclear feature input","false_positive":false,"suggested_fix":"Add fallback for when no feature description or PRD is supplied"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:1f2bc0190b2f094897672ffa95d6e611aeefe7f234cfd58ab02452ba0b73a1d7","category":"nl_quality","rule_id":"R01","file":"pm-execution/commands/write-stories.md","line":null,"severity":"low","confidence":"high","evidence":"'Include design links or mockup references where relevant'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no measurable criteria","false_positive":false,"suggested_fix":"Specify when design links should be included"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:045cf8263b824c766a1b7c26b293a5f769cfeff8945cc1fbfd877f7edce2f1a3","category":"nl_quality","rule_id":"R17","file":"pm-execution/commands/stakeholder-map.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for missing/incomplete stakeholder information","false_positive":false,"suggested_fix":"Add guidance for proceeding when stakeholder info is sparse"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d46c43c9189afff174a77fd4742fe498206d3fc2f8429e62e6af17bf06d9851a","category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/user-stories/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from closely related job-stories/wwas skills","false_positive":false,"suggested_fix":"Add a line pointing to job-stories and wwas"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:958d33cd3535854a82c894fbaf9f81c774731d3840842abe136e8a0463c8a2f3","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/user-stories/SKILL.md","line":41,"severity":"low","confidence":"medium","evidence":"'3. [System validates correctly]'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' in acceptance-criteria template","false_positive":false,"suggested_fix":"Replace with a specific, testable validation criterion"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:6e1b2615cf576541cfd1db9db262cdced17a9e83bd775c475c8e1694d6c23134","category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/retro/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing retro from closely related sprint-plan","false_positive":false,"suggested_fix":"Add a line like 'For sprint planning, see sprint-plan'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d7c1e3c73f12cd2fcb1d7e5b3a5030ff2aa352bcdfbe31605920033b984c19dd","category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/test-scenarios/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note noting this skill consumes output from user-stories/job-stories/wwas","false_positive":false,"suggested_fix":"Add a line noting it takes acceptance criteria from those skills"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:432fc8671906c0544169d161406f313ab395ff92b0c8f6da5fa4b83bf3438b71","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/test-scenarios/SKILL.md","line":67,"severity":"low","confidence":"medium","evidence":"'Images, titles, and prices are displayed correctly'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' in worked example test step","false_positive":false,"suggested_fix":"Specify what 'correct' means relative to source-of-truth fields"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:bee9a2fdb5192b20ba23524257b3102b5c78d364ab9c1c29e709b6ffb19d02dd","category":"nl_quality","rule_id":"R06","file":"pm-execution/skills/create-prd/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"8-section PRD framework has no concrete worked example anywhere","penalty":-5,"pattern":"no-worked-example","description":"No worked example of a filled PRD","false_positive":false,"suggested_fix":"Add a short filled-in example PRD section or link to one"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f6bc491c0af1c8fe54aa1a3e8179ebe56958db01fd6ea5f7bea09d7206bb2f58","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/create-prd/SKILL.md","line":60,"severity":"low","confidence":"medium","evidence":"'7.3 Technology (optional, only if relevant)'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no criteria for when the subsection applies","false_positive":false,"suggested_fix":"State the condition under which Technology detail should be included"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b35793c5e262746d94c40946f78e419322964babe8b9e7e470547c79a3dee292","category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/wwas/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing WWA format from user-stories/job-stories","false_positive":false,"suggested_fix":"Add a line pointing to user-stories and job-stories"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:4e5f35bf51504380aad7f5feafd7c01628487569e56be79e16009d90fdd4e45b","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/wwas/SKILL.md","line":54,"severity":"low","confidence":"medium","evidence":"'System handles multiple expense categories correctly'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'correctly' in worked example acceptance criterion","false_positive":false,"suggested_fix":"Specify observable behavior instead of 'correctly'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9559262f498d072217b6305e64dd210439b7b1c93dbccf1de1da08cfc7e08669","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/wwas/SKILL.md","line":26,"severity":"low","confidence":"medium","evidence":"'8. Size appropriately - Small enough for one sprint estimate'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'appropriately' with no measurable criterion","false_positive":false,"suggested_fix":"Give a concrete sizing threshold"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:353ddf0f99e43e9952e452b998cb6f9325be417b5c8bc7cf7d7a7b0abd7abc98","category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/job-stories/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing job-stories from user-stories/wwas","false_positive":false,"suggested_fix":"Add a line pointing to user-stories and wwas"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:713f6335230741c35f952d810ff99c862527fb6df196a62df20766192e0257dc","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/job-stories/SKILL.md","line":37,"severity":"low","confidence":"medium","evidence":"'1. [Situation is properly recognized]'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'properly' in acceptance-criteria template","false_positive":false,"suggested_fix":"Replace with a specific, testable recognition criterion"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:2f6bff248dc8e0e294d370e907b6f41d6f96aec98797a4cd94c8e756eb86f89f","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/brainstorm-okrs/SKILL.md","line":23,"severity":"low","confidence":"medium","evidence":"'Key Results always refer to quantitative metrics, some of which might be KPIs.'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'some' with no measurable criteria","false_positive":false,"suggested_fix":"Clarify which/how many Key Results are typically KPIs"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0c023b9ee5e92653773f4c4f8e129254e4474b9149aeca3beeae17f5d642a62a","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/summarize-meeting/SKILL.md","line":49,"severity":"low","confidence":"high","evidence":"'[Additional points as needed]'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'as needed' with no criteria for when additional points apply","false_positive":false,"suggested_fix":"Replace with explicit guidance on what triggers an additional point"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b6db4865c4e57e563bf9fa8cdc00bbb8c8e27f808c4645f5a1fe04bdb6c6bd5c","category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/sprint-plan/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing sprint-plan (pre-sprint) from retro (post-sprint)","false_positive":false,"suggested_fix":"Add a line like 'For post-sprint reflection, see retro'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:1b8417d818c7d45c21c0d2707e3246b3dda2ae3aadf50b2645e22356f68fcac4","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/sprint-plan/SKILL.md","line":33,"severity":"low","confidence":"medium","evidence":"'Sequence dependent stories appropriately'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'appropriately' with no measurable criterion","false_positive":false,"suggested_fix":"Specify sequencing rule (e.g. topological order by blocking dependency)"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e6eb31118ec7ddb81f033e8e8fd213ca3d85ad1d4a8363808eb65551ffa570a6","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/dummy-dataset/SKILL.md","line":101,"severity":"low","confidence":"medium","evidence":"'Realistic, business-appropriate values'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'appropriate' with no measurable criteria","false_positive":false,"suggested_fix":"Define what makes a value business-appropriate (valid ranges/enums per column)"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:5e2d634b327910951001a82379a6bd2e9cfeafc1f2ab2141f21fe87048641766","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/stakeholder-map/SKILL.md","line":18,"severity":"low","confidence":"medium","evidence":"'List all relevant individuals and groups'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no criteria for what counts as a relevant stakeholder","false_positive":false,"suggested_fix":"Give criteria for inclusion (e.g. decision authority or direct impact)"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:360700fd1a7f242ab87782fa449f49c9f4ae4af65e6777c413322e7126df1b9d","category":"nl_quality","rule_id":"R07","file":"pm-execution/skills/pre-mortem/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"strategy-red-team references pre-mortem but pre-mortem does not reciprocate","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing pre-mortem from closely related strategy-red-team","false_positive":false,"suggested_fix":"Add a line like 'For attacking a plan's assumptions before launch, see strategy-red-team'"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:64502b60a0fa302bbe5f670fd2b72f6a8de8d26892610a344b99988689acefd5","category":"nl_quality","rule_id":"R01","file":"pm-execution/skills/pre-mortem/SKILL.md","line":18,"severity":"low","confidence":"medium","evidence":"'If relevant, use web search to research competitive landscape or market conditions.'","penalty":-2,"pattern":"vague-quantifier","description":"Vague quantifier 'relevant' with no criteria for when web search should be used","false_positive":false,"suggested_fix":"State the condition that makes web search relevant"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a33761d3f9a56d04789c24c7f432c6f3742869da9cdb48110cd070c6822cde97","category":"nl_quality","rule_id":"R06","file":"pm-execution/skills/strategy-red-team/SKILL.md","line":null,"severity":"medium","confidence":"medium","evidence":"only an abstract output template, no filled worked example","penalty":-5,"pattern":"no-worked-example","description":"Novel/complex red-team methodology explained with no worked example","false_positive":false,"suggested_fix":"Add one short worked kill-assumption example"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:1f2949c13625d4e4bf5db7d59a4995c60f7d471187176da818e856510f2883e4","category":"nl_quality","rule_id":"R17","file":"pm-product-discovery/commands/triage-requests.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for malformed or unreadable uploaded files","false_positive":false,"suggested_fix":"Add a fallback instruction for unparsable or malformed uploads"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d73b6a0171fcdfede8b24b500b2ca51e07fcd22d437bbbc0139f4cb25e8e5db3","category":"nl_quality","rule_id":"R17","file":"pm-product-discovery/commands/brainstorm.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No fallback described for unreadable/bad uploaded context files","false_positive":false,"suggested_fix":"Add a note on handling unreadable/malformed uploads"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:76dd73393960355e81faa09c49c8bae9d73175e6a7686fe61dece83cce140eb7","category":"nl_quality","rule_id":"R17","file":"pm-product-discovery/commands/discover.md","line":null,"severity":"low","confidence":"medium","evidence":"","penalty":-5,"pattern":"no-error-path","description":"No error-path handling for bad/unreadable uploaded research files","false_positive":false,"suggested_fix":"Add a note on handling unreadable/malformed uploads"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b3286f8125e098febfb419a0b08f25503aacb02f40895bec819adc508aaba5d7","category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/analyze-feature-requests/SKILL.md","line":18,"severity":"low","confidence":"medium","evidence":"Opportunity Score formula given with no worked numeric example","penalty":-5,"pattern":"no-worked-example","description":"Opportunity Score formula introduced with no worked example","false_positive":false,"suggested_fix":"Add a short worked example (sample Importance/Satisfaction values to score)"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:551f1de96f88b8bd435fa7f872d6a1dad9a12615e9537d30152ce60f29290567","category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-ideas-existing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(Existing Product)' but body never cross-references brainstorm-ideas-new","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-ideas-new","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-ideas-new for new-product ideation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d5f89a38c77646967c1c67d999da7045f62f9b2a7dc4cc1af6f80205aa55287b","category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/prioritize-assumptions/SKILL.md","line":26,"severity":"low","confidence":"medium","evidence":"'Risk: Defined as (1 - Confidence) x Effort' with no sample calculation","penalty":-5,"pattern":"no-worked-example","description":"ICE/RICE and Impact x Risk formulas described but never illustrated with a worked example","false_positive":false,"suggested_fix":"Add one worked example assumption run through the formula and matrix"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:96cfce86eef5bdfa1546c02d3ff0d5d9c5d53a716dd6cf14234a13ce635fc700","category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-experiments-new/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(New Product)' but body never cross-references brainstorm-experiments-existing","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-experiments-existing","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-experiments-existing"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d1f9b0a1394784314ba0da858e4e344de1b70cdfc69bd3cb7850eca573f44098","category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/opportunity-solution-tree/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"individual levels get fragmentary examples only, no connected end-to-end example","penalty":-5,"pattern":"no-worked-example","description":"4-level OST structure has no single worked example chain","false_positive":false,"suggested_fix":"Add one small end-to-end worked OST example"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:358306864e53fba53c8cfc6c979b97167ca38d85d2202945d1c5d357eeb20981","category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/identify-assumptions-existing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(Existing Product)' but body never mentions identify-assumptions-new","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling identify-assumptions-new","false_positive":false,"suggested_fix":"Add a scope note pointing to identify-assumptions-new"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:08397beb45d9d4a97c94fb4b34c4c5d6f2dffb699e2b2aaf6cba4896a1c8e00e","category":"nl_quality","rule_id":"R06","file":"pm-product-discovery/skills/prioritize-features/SKILL.md","line":20,"severity":"low","confidence":"medium","evidence":"Opportunity Score, ICE, and RICE formulas named but never demonstrated","penalty":-5,"pattern":"no-worked-example","description":"Prioritization formulas introduced with no worked numeric example","false_positive":false,"suggested_fix":"Add one worked example scoring a sample feature"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:16a7fbf5d24e74246f69ba54983e609d8e4f614296f9f2df630a5743353ccf46","category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/identify-assumptions-new/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"body never mentions identify-assumptions-existing despite extending its 4 core risks to 8","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling identify-assumptions-existing","false_positive":false,"suggested_fix":"Add a scope note pointing to identify-assumptions-existing"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:beb3a2b9b9ad501c2b9d57d70b429a03c7082362a9c52933a65f9c87899f3a9d","category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-experiments-existing/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(Existing Product)' but body never points to brainstorm-experiments-new","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-experiments-new","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-experiments-new"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:99796967844b0738467d3392b88d78db872c76cc7faba9fda3cff082c69df35b","category":"nl_quality","rule_id":"R07","file":"pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md","line":null,"severity":"low","confidence":"medium","evidence":"title says '(New Product)' but body never points to brainstorm-ideas-existing","penalty":-3,"pattern":"missing-scope-note","description":"No scope note distinguishing from sibling brainstorm-ideas-existing","false_positive":false,"suggested_fix":"Add a scope note pointing to brainstorm-ideas-existing"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:fea61a05b761fc7cb45bc64ec59d10a536cb81812d5d87814b6999a913146e60","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/ansoff-matrix/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:17e41ab6101c34768f0528d819cd604b7517ba891237f0b9588d9ca65a90e4e1","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/business-model/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b62e201995df06b31f80771374aeb758bed7052cd8f226152fa8e1b11ecb7d86","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/lean-canvas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e0585b91e07a332b2a639db7f98afa5166fe66f81187cdbcf2a207e6e880133f","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/monetization-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:4f42e87cdbd963d9745ac303c154408c7268d3ad295f3c04984f5e216774965d","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/pestle-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:df66e0a520d52c58d2c6e1a4f5b050e5a10473257f60e1930b48f355f4be9cab","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/porters-five-forces/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f3e3b9942897b4c4c82b4daaaf0c6a5882b858d4107f04df4e0373c518651e3e","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/pricing-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e3482b270a6f62c708fef0487ac40db940c51dcaa9d033b14105b48a643996e6","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/product-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:fb17db8c6cad123e59f6dc64f39f5118fe763d952d9533216573feb2a294dda8","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/product-vision/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d4b3e6c7c94d4d22aa872e3528ffc945a9e7d541e594db71d4eed2e14545fe49","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/startup-canvas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8a15b689f7c1f62d38682726bceec53aeb1b133e525fd3018c2bffdd83443ed1","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/swot-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:2d2836558006ae8a733df4b14741e3fb475a945e8962586d42a6fc18a88886b8","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-strategy/skills/value-proposition/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:abe187374693f40d0e1611fed3d0fe2d4539528928855cd3226fe19fe24589d2","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/analyze-feature-requests/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a95f6dd20211e2096769eff21b6f1d2699ca10b0f5eb2b00b8645ac8ce22e22b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-experiments-existing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:2f571d708f269ee1dfe1107addf40d667e690984c1403acfdd172e34fff16d1f","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-experiments-new/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0c6732035b27cb4a9f2b989ebaeaf356b90fd1e8317448282d735aa5a9f26730","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-ideas-existing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:06d41871cf8352742207dacbfcb766b6dee27f15b69a27cb10bf53447b6f9f08","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/brainstorm-ideas-new/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c57c6c1c497c52bad511570ba515fe662636947c567b10af634f8b0fbc15c45b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/identify-assumptions-existing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:72d9baf956932112b3af3db4148cc3b34bdb3c9305afe74160b0ef0608f357ee","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/identify-assumptions-new/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:858d8c4c5421b71c9f4d6cf2ee6640d873d386b2d9dccd0bc546ada40a581546","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/interview-script/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0978b65d8afcc499b9ba6e876dbf8d9ae1c30694849db98ba3e2af807400db9b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/metrics-dashboard/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c9f5da0fa66d43e3dc2131d47e29e2af5f1a7cd5d2aa2e2aa4080b112e3a6b95","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/opportunity-solution-tree/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:cd47bb32852f7f4f727b5f2f3596911daf2229c9e907a2543742ef45d0fbd795","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/prioritize-assumptions/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8e4958b9ca87db39074b81e174f3eec9b83b89ef7b13ec08c951fcca3c7a377b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/prioritize-features/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f600f69a4e1bb7dbacfc8e9a8146b11ee714e99b3067f14b971a26efa63e6177","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-product-discovery/skills/summarize-interview/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:c65dd07867965baf34c7aed9a1c61764f633840061268ccf7e7bdad25ff1bfcd","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/marketing-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d786a26a1f06526164d7b7336f289fcbff3cda1a0b4003cc895398eebb40b8de","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/north-star-metric/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:5ff1032ac0d583ae884591697c7d7d300128abab07d600c56670477850e3822f","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/positioning-ideas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:b81ab3ba352eed304fd8f8040f9f2c2817be4ad58aa3ada2ecec0952323a9c00","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/product-name/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:68e07dbbefbe2d4837fe1c538d1926cfc9804603b6f55c0f73b429c071b1251b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-marketing-growth/skills/value-prop-statements/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0d088f2aadde027f69fc9bae08d077b3ad425b79e7730311311c3b988dee07eb","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/competitor-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ec06ccf78027298889357f01458ca542caaee2289a947b2c68145c4bb2fa18cb","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/customer-journey-map/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:eaa581118dba807c00ab2df2bbee47357ae3fdf2196a958d29a8d42f7801c8fa","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/market-segments/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:e3993202882ff54aa78a79023e987a14c5b31175745d5b0345ade0174cd24fba","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/market-sizing/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:dd8c7d559c96b8fd078a2e67d14df401b4e13b92b4433fa9e5dcd6701f8f10fa","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/sentiment-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a6e086a23e1cf87d1faf1bbdfc4cbc4cbfa4fcd7ee4b78f9a5baa44732d1afd9","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/user-personas/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:d772d0ba1ee1e8a23c2cc88f6ca5ed2492ee2ac1fe5006d6c11fbc595799c812","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-market-research/skills/user-segmentation/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:a6263ce697d1a730f3e3b610e43ae3878543f01f374d289b126eeeb31e757e6b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/beachhead-segment/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:fddd6372e34ad4c44989841d91e2f383f0883d06a8ed331797cad11c3429cafd","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/competitive-battlecard/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f49373125235de246b74b480811be919f12273666f26cd3e4cfec6dfe3887a17","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/growth-loops/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:13da0276ae233c92514d9c181c37343bdf0c6071d6beca94af144c6330f8f86a","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/gtm-motions/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:691f7969db3ccd2ca3b9c3d8326dfda20d60ec0e906ccba2fed6a8f1b579b98e","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/gtm-strategy/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:956238330f708498db90be43e630caa2e5f4fe2b16356217d542c22f9197eb72","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-go-to-market/skills/ideal-customer-profile/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:3cc4c614e33418c76655ee89f39f621c82fcfbcd981d450ef0f962b8ccb1dc43","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/brainstorm-okrs/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:906a9400f7702ba43e1472d5af9c20ea282cebf58eea4ab435eda20e0afe72f8","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/create-prd/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:f693a8f4b01f7ebf2c6a1a3881ad6891cfe52a7867f36d2353e0356407794dd5","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/outcome-roadmap/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:eb7de67f753a1db83eaa259017b55fdc24307466d4808040348f8b9643403ea1","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/pre-mortem/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:caa1c9962a8134b06ff964ce774b99807cb853b4691f0eaa7b723206425dab40","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/release-notes/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:354f72db4b482a6d782f2eae6b49ca81ce56e39e2e1fee4d11416c39b9197a99","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/retro/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:bf848fb18a5b9370d2871a8a0eb078d92c274d65158523b4696ea21f05cdfb4b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/sprint-plan/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:0e984f1c8258b1e53b148a3f1aa7853f06e90c78191a00a281dd49d78db859a3","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/stakeholder-map/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:9c87e3b7302a1e28a0b79ba51e54591ece48949e0e99be5da69891e712403515","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/strategy-red-team/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:ddb2caeefd1c0c5c90c0517e61d98bc1325e67bb1b1c0ff70d88c9a9cd82543b","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-execution/skills/summarize-meeting/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} +{"event":"finding","timestamp":"2026-08-06T00:51:15Z","audit_run_id":"31059829946","repo":"phuryn/pm-skills","commit_sha":"18468a95b427e70e258b51389796367c6f684e7d","fingerprint":"sha256:8455936340686693e9084637b2106dfddec92f6f5d0c512a10eaea8b65af6f23","category":"cross_component","rule_id":"CC-terminology-drift","file":"pm-data-analytics/skills/ab-test-analysis/SKILL.md","line":null,"severity":"low","confidence":"high","evidence":"file contains literal $ARGUMENTS placeholder","penalty":null,"pattern":"skill-uses-argument-placeholder","description":"Skill SKILL.md uses $ARGUMENTS despite CLAUDE.md stating skills need no placeholders","false_positive":false,"suggested_fix":"Remove the $ARGUMENTS placeholder / Input Format section; skills read context from the conversation"} {"event":"finding","timestamp":"2026-08-07T06:30:30Z","audit_run_id":"31153883774","repo":"Vincentwei1021/video-shotcraft","commit_sha":"0022ec45d28800cecb5b16624a3179093c93f4e9","fingerprint":"sha256:fe9bcce17b04db042b1843e383c797e9f8c507d99e5377e649272db1bbf664c5","category":"security","rule_id":"SEC-unescaped-attribute-interpolation","file":"gallery/app.js","line":152,"severity":"medium","confidence":"high","evidence":"data-src=\"${style.media.url}\" is not wrapped in escapeHtml(), while the adjacent title/sourceUrl values in the same file are","penalty":null,"pattern":"unescaped-attribute-interpolation","description":"style.media.url interpolated directly into a data-src attribute with no HTML-escaping in the gif branch of mediaMarkup()","false_positive":false,"suggested_fix":"Wrap with escapeHtml(style.media.url) to match the escaping used for sourceUrl and title elsewhere in the file"} {"event":"finding","timestamp":"2026-08-07T06:30:30Z","audit_run_id":"31153883774","repo":"Vincentwei1021/video-shotcraft","commit_sha":"0022ec45d28800cecb5b16624a3179093c93f4e9","fingerprint":"sha256:feb1039c429e3ace708ddb25e1cb7d9238d2c588b33843a9785be78a245d7a57","category":"security","rule_id":"SEC-unescaped-attribute-interpolation","file":"gallery/app.js","line":158,"severity":"medium","confidence":"high","evidence":"data-src=\"${style.media.url}\" is not wrapped in escapeHtml() in the