opencode-skills-collection 3.1.23 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +24 -1
- package/bundled-skills/007/SKILL.md +2 -2
- package/bundled-skills/10-andruia-skill-smith/SKILL.md +1 -1
- package/bundled-skills/agent-squad/SKILL.md +5 -0
- package/bundled-skills/agent-squad/alex/SKILL.md +3 -0
- package/bundled-skills/agent-squad/aria/SKILL.md +3 -0
- package/bundled-skills/agent-squad/dep/SKILL.md +3 -0
- package/bundled-skills/agent-squad/luna/SKILL.md +4 -1
- package/bundled-skills/agent-squad/mason/SKILL.md +3 -0
- package/bundled-skills/agent-squad/max/SKILL.md +3 -0
- package/bundled-skills/agent-squad/quinn/SKILL.md +3 -0
- package/bundled-skills/agent-squad/rex/SKILL.md +3 -0
- package/bundled-skills/angular/metadata.json +1 -1
- package/bundled-skills/angular-best-practices/metadata.json +1 -1
- package/bundled-skills/angular-state-management/metadata.json +1 -1
- package/bundled-skills/angular-ui-patterns/metadata.json +1 -1
- package/bundled-skills/antigravity-skill-orchestrator/SKILL.md +2 -2
- package/bundled-skills/apify-actor-development/SKILL.md +2 -2
- package/bundled-skills/apple-container/SKILL.md +165 -0
- package/bundled-skills/apple-container/references/commands.md +1593 -0
- package/bundled-skills/apple-container/references/concepts.md +294 -0
- package/bundled-skills/apple-container/references/configuration.md +499 -0
- package/bundled-skills/apple-container/references/workflows.md +498 -0
- package/bundled-skills/ask-copilot/SKILL.md +112 -0
- package/bundled-skills/auto-research/SKILL.md +126 -0
- package/bundled-skills/brooks-lint/SKILL.md +1 -1
- package/bundled-skills/browser-harness/references/install.md +3 -1
- package/bundled-skills/chrome-extension-developer/SKILL.md +1 -1
- package/bundled-skills/clean-code-guard/SKILL.md +184 -0
- package/bundled-skills/clean-code-guard/references/ai-failure-modes.md +345 -0
- package/bundled-skills/clean-code-guard/references/comments-and-formatting.md +115 -0
- package/bundled-skills/clean-code-guard/references/dry-kiss-yagni.md +133 -0
- package/bundled-skills/clean-code-guard/references/naming-and-functions.md +187 -0
- package/bundled-skills/clean-code-guard/references/review-checklist.md +150 -0
- package/bundled-skills/clean-code-guard/references/solid.md +280 -0
- package/bundled-skills/clean-code-guard/references/sources.md +47 -0
- package/bundled-skills/cloudflare-security-audit/SKILL.md +137 -0
- package/bundled-skills/cloudflare-security-audit/references/AI-AND-LLM.md +67 -0
- package/bundled-skills/cloudflare-security-audit/references/ATTACK-CLASSES.md +116 -0
- package/bundled-skills/cloudflare-security-audit/references/CLIENT-SIDE.md +67 -0
- package/bundled-skills/cloudflare-security-audit/references/HUNTING.md +110 -0
- package/bundled-skills/cloudflare-security-audit/references/MEMORY-SAFETY-AND-BINARY.md +58 -0
- package/bundled-skills/cloudflare-security-audit/references/RECONNAISSANCE.md +46 -0
- package/bundled-skills/cloudflare-security-audit/references/VALIDATION-AND-REPORTING.md +109 -0
- package/bundled-skills/cloudflare-security-audit/references/WEB-PROTOCOL-AND-AUTH.md +85 -0
- package/bundled-skills/cloudflare-security-audit/resources/report-schema.json +210 -0
- package/bundled-skills/comfyui-gateway/references/troubleshooting.md +1 -1
- package/bundled-skills/commit/SKILL.md +2 -1
- package/bundled-skills/deepapi/SKILL.md +6 -6
- package/bundled-skills/docs/README.md +1 -1
- package/bundled-skills/docs/contributors/quality-bar.md +1 -1
- package/bundled-skills/docs/contributors/security-guardrails.md +1 -1
- package/bundled-skills/docs/integrations/jetski-cortex.md +5 -5
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +3 -3
- package/bundled-skills/docs/maintainers/ci-drift-fix.md +7 -5
- package/bundled-skills/docs/maintainers/merge-batch.md +24 -7
- package/bundled-skills/docs/maintainers/pr-autonomy.md +89 -0
- package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +1 -1
- package/bundled-skills/docs/maintainers/release-process.md +9 -9
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +5 -5
- package/bundled-skills/docs/maintainers/skills-date-tracking.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +2 -2
- package/bundled-skills/docs/users/{antigravity-awesome-skills-vs-awesome-claude-skills.md → agentic-awesome-skills-vs-awesome-claude-skills.md} +5 -5
- package/bundled-skills/docs/users/ai-agent-skills.md +4 -4
- package/bundled-skills/docs/users/best-claude-code-skills-github.md +3 -3
- package/bundled-skills/docs/users/best-cursor-skills-github.md +3 -3
- package/bundled-skills/docs/users/bundles.md +56 -57
- package/bundled-skills/docs/users/claude-code-skills.md +6 -6
- package/bundled-skills/docs/users/codex-cli-skills.md +5 -5
- package/bundled-skills/docs/users/cursor-skills.md +3 -3
- package/bundled-skills/docs/users/faq.md +27 -15
- package/bundled-skills/docs/users/gemini-cli-skills.md +4 -4
- package/bundled-skills/docs/users/getting-started.md +22 -12
- package/bundled-skills/docs/users/kiro-integration.md +7 -7
- package/bundled-skills/docs/users/plugins.md +8 -9
- package/bundled-skills/docs/users/security-skills.md +1 -1
- package/bundled-skills/docs/users/skills-vs-mcp-tools.md +1 -1
- package/bundled-skills/docs/users/specialized-plugin-roadmap.md +3 -4
- package/bundled-skills/docs/users/usage.md +9 -9
- package/bundled-skills/docs/users/visual-guide.md +7 -7
- package/bundled-skills/docs/users/windows-truncation-recovery.md +1 -1
- package/bundled-skills/docs/users/workflows.md +1 -1
- package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/FAQ.vi.md +15 -8
- package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +12 -5
- package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/README.vi.md +21 -17
- package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +2 -2
- package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +1 -1
- package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +8 -8
- package/bundled-skills/docs-guard/SKILL.md +109 -0
- package/bundled-skills/docs-guard/references/code-samples.md +46 -0
- package/bundled-skills/docs-guard/references/docstrings.md +60 -0
- package/bundled-skills/docs-guard/references/review-checklist.md +45 -0
- package/bundled-skills/docs-guard/references/sources.md +22 -0
- package/bundled-skills/docs-guard/references/verification.md +51 -0
- package/bundled-skills/efficient-web-research/SKILL.md +4 -0
- package/bundled-skills/electron-development/SKILL.md +1 -1
- package/bundled-skills/event-staffing-compliance/SKILL.md +3 -0
- package/bundled-skills/event-staffing-ordering/SKILL.md +3 -0
- package/bundled-skills/feature-tracking/SKILL.md +222 -0
- package/bundled-skills/flutter-expert/SKILL.md +6 -1
- package/bundled-skills/flutter-expert/resources/implementation-playbook.md +214 -0
- package/bundled-skills/gemini-deep-research/README.md +246 -0
- package/bundled-skills/gemini-deep-research/SKILL.md +136 -0
- package/bundled-skills/gemini-deep-research/requirements.txt +2 -0
- package/bundled-skills/gemini-deep-research/scripts/research.py +692 -0
- package/bundled-skills/git-pushing/SKILL.md +21 -4
- package/bundled-skills/git-pushing/scripts/smart_commit.sh +206 -11
- package/bundled-skills/go-in-depth/scripts/workflow-script.js +4 -1
- package/bundled-skills/grok-build/SKILL.md +167 -0
- package/bundled-skills/grok-build/references/cli.md +99 -0
- package/bundled-skills/huggingface-tool-builder/references/find_models_by_paper.sh +1 -1
- package/bundled-skills/idea-autopsy/SKILL.md +147 -0
- package/bundled-skills/it-manager-hospital/README.md +1 -1
- package/bundled-skills/it-manager-pro/README.md +1 -1
- package/bundled-skills/itil-expert/README.md +1 -1
- package/bundled-skills/langgraph/SKILL.md +1 -1
- package/bundled-skills/linkedin-content-generator/SKILL.md +1 -1
- package/bundled-skills/lint-and-validate/scripts/lint_runner.py +23 -23
- package/bundled-skills/lint-and-validate/scripts/type_coverage.py +30 -30
- package/bundled-skills/logic-lens/SKILL.md +1 -1
- package/bundled-skills/lore/LICENSE +21 -0
- package/bundled-skills/lore/README.md +386 -0
- package/bundled-skills/lore/README.zh-CN.md +386 -0
- package/bundled-skills/lore/SKILL.md +453 -0
- package/bundled-skills/lore/WORKFLOWS.md +216 -0
- package/bundled-skills/lore/WORKFLOWS.zh-CN.md +216 -0
- package/bundled-skills/lore/references/audit-template.md +60 -0
- package/bundled-skills/lore/references/compatibility.md +228 -0
- package/bundled-skills/lore/references/config.md +125 -0
- package/bundled-skills/lore/references/entry-format.md +70 -0
- package/bundled-skills/lore/references/history-command.md +106 -0
- package/bundled-skills/lore/references/monorepo-detection.md +78 -0
- package/bundled-skills/lore/references/platform-mirrors.md +377 -0
- package/bundled-skills/lore/references/stale-new-markers.md +62 -0
- package/bundled-skills/lore/references/summary-template.md +98 -0
- package/bundled-skills/lore/scripts/README.md +54 -0
- package/bundled-skills/lore/scripts/README.zh-CN.md +54 -0
- package/bundled-skills/lore/scripts/find_duplicates.py +211 -0
- package/bundled-skills/lore/scripts/find_stale.py +116 -0
- package/bundled-skills/lore/scripts/history.py +527 -0
- package/bundled-skills/lore/scripts/id_hash.py +32 -0
- package/bundled-skills/lore/scripts/list_entries.py +183 -0
- package/bundled-skills/lovable-cleanup/SKILL.md +3 -3
- package/bundled-skills/makepad-splash/SKILL.md +1 -1
- package/bundled-skills/mmx-cli/SKILL.md +14 -1
- package/bundled-skills/monopoly/SKILL.md +5 -0
- package/bundled-skills/monopoly/patterns/SKILL.md +4 -0
- package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +4 -0
- package/bundled-skills/monopoly/security-checklist/SKILL.md +4 -0
- package/bundled-skills/monopoly/tech-matrix/SKILL.md +4 -0
- package/bundled-skills/mtls-configuration/SKILL.md +1 -1
- package/bundled-skills/network-101/SKILL.md +4 -5
- package/bundled-skills/nika/SKILL.md +270 -0
- package/bundled-skills/not-a-vibe-coder/SKILL.md +4 -0
- package/bundled-skills/ontoly-software-graph/SKILL.md +160 -0
- package/bundled-skills/openclaw-github-repo-commander/SKILL.md +1 -1
- package/bundled-skills/pilot-protocol/SKILL.md +6 -3
- package/bundled-skills/postgres-readonly-queries/README.md +77 -0
- package/bundled-skills/postgres-readonly-queries/SKILL.md +152 -0
- package/bundled-skills/postgres-readonly-queries/connections.example.json +34 -0
- package/bundled-skills/postgres-readonly-queries/requirements.txt +1 -0
- package/bundled-skills/postgres-readonly-queries/scripts/query.py +262 -0
- package/bundled-skills/pptx-deck-creation/SKILL.md +275 -0
- package/bundled-skills/pptx-deck-creation/references/audit-checklist.md +156 -0
- package/bundled-skills/pptx-deck-creation/references/design-profiles.md +96 -0
- package/bundled-skills/pptx-deck-creation/references/python-snippets.md +150 -0
- package/bundled-skills/pptx-deck-creation/references/reference-deck-analysis.md +91 -0
- package/bundled-skills/pptx-deck-creation/references/visual-asset-adapters.md +158 -0
- package/bundled-skills/privilege-escalation-methods/SKILL.md +1 -1
- package/bundled-skills/product-decision-agent/SKILL.md +94 -0
- package/bundled-skills/product-decision-agent/agents/openai.yaml +7 -0
- package/bundled-skills/product-decision-agent/references/methodology-basis.md +232 -0
- package/bundled-skills/product-decision-agent/references/product-playbooks.md +813 -0
- package/bundled-skills/product-decision-agent/references/reasoning-engine.md +289 -0
- package/bundled-skills/product-decision-agent/references/response-examples.md +279 -0
- package/bundled-skills/product-decision-agent/scripts/quality_gate.py +221 -0
- package/bundled-skills/product-decision-agent/scripts/test_quality_gate.py +94 -0
- package/bundled-skills/pytest-skill/reference/playbook.md +358 -0
- package/bundled-skills/quit-sponsor/SKILL.md +96 -0
- package/bundled-skills/rclone-cli/references/providers/s3.md +1 -1
- package/bundled-skills/security-and-hardening/SKILL.md +1 -1
- package/bundled-skills/semgrep-rule-creator/SKILL.md +6 -6
- package/bundled-skills/skill-creator/README.md +3 -3
- package/bundled-skills/skill-creator/SKILL.md +8 -4
- package/bundled-skills/skill-creator/scripts/quick_validate.py +1 -1
- package/bundled-skills/sql-injection-testing/SKILL.md +4 -4
- package/bundled-skills/subagent-orchestrator/README.md +1 -1
- package/bundled-skills/super-code/bash/SKILL.md +3 -0
- package/bundled-skills/super-code/c/SKILL.md +3 -0
- package/bundled-skills/super-code/cpp/SKILL.md +3 -0
- package/bundled-skills/super-code/csharp/SKILL.md +3 -0
- package/bundled-skills/super-code/dart/SKILL.md +3 -0
- package/bundled-skills/super-code/elixir/SKILL.md +3 -0
- package/bundled-skills/super-code/go/SKILL.md +3 -0
- package/bundled-skills/super-code/java/SKILL.md +3 -0
- package/bundled-skills/super-code/kotlin/SKILL.md +3 -0
- package/bundled-skills/super-code/php/SKILL.md +3 -0
- package/bundled-skills/super-code/python/SKILL.md +3 -0
- package/bundled-skills/super-code/ruby/SKILL.md +3 -0
- package/bundled-skills/super-code/rust/SKILL.md +3 -0
- package/bundled-skills/super-code/scala/SKILL.md +3 -0
- package/bundled-skills/super-code/swift/SKILL.md +3 -0
- package/bundled-skills/super-code/typescript/SKILL.md +3 -0
- package/bundled-skills/telegram-bot-messaging/README.md +185 -0
- package/bundled-skills/telegram-bot-messaging/SKILL.md +101 -0
- package/bundled-skills/telegram-bot-messaging/scripts/telegram.sh +420 -0
- package/bundled-skills/test-guard/SKILL.md +132 -0
- package/bundled-skills/test-guard/references/jest.md +50 -0
- package/bundled-skills/test-guard/references/llm-app-testing.md +40 -0
- package/bundled-skills/test-guard/references/phpunit.md +56 -0
- package/bundled-skills/test-guard/references/pytest.md +65 -0
- package/bundled-skills/trading-ledger/SKILL.md +11 -3
- package/bundled-skills/uizze-ui-research/SKILL.md +93 -0
- package/bundled-skills/vibe-code-auditor/SKILL.md +1 -1
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +1 -1
- package/bundled-skills/videodb/scripts/ws_listener.py +29 -15
- package/bundled-skills/voice-ai-engine-development/README.md +1 -1
- package/bundled-skills/vulnerability-scanner/SKILL.md +1 -1
- package/bundled-skills/warehouse/SKILL.md +154 -0
- package/bundled-skills/woo-guard/SKILL.md +113 -0
- package/bundled-skills/woo-guard/references/checkout-and-money.md +64 -0
- package/bundled-skills/woo-guard/references/hpos-and-crud.md +87 -0
- package/bundled-skills/woo-guard/references/review-checklist.md +44 -0
- package/bundled-skills/woo-guard/references/sources.md +17 -0
- package/bundled-skills/wp-guard/SKILL.md +119 -0
- package/bundled-skills/wp-guard/references/i18n.md +88 -0
- package/bundled-skills/wp-guard/references/performance.md +70 -0
- package/bundled-skills/wp-guard/references/review-checklist.md +57 -0
- package/bundled-skills/wp-guard/references/security.md +100 -0
- package/bundled-skills/wp-guard/references/sources.md +27 -0
- package/bundled-skills/writing-skills/gotchas.md +1 -1
- package/bundled-skills/writing-skills/references/standards/metadata-standard.md +1 -1
- package/bundled-skills/x-twitter-scraper/SKILL.md +14 -32
- package/bundled-skills/xss-html-injection/SKILL.md +3 -3
- package/bundled-skills/youtube-seo-optimizer/SKILL.md +1 -1
- package/bundled-skills/youtube-summarizer/CHANGELOG.md +2 -2
- package/package.json +1 -1
- package/skills_index.json +273 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: idea-autopsy
|
|
3
|
+
description: "Autopsy a business idea before you build it: kill-list check, five hard filters, a free-AI one-prompt test, live ad-market verification, and a verdict with a named kill-pattern."
|
|
4
|
+
category: product
|
|
5
|
+
risk: critical
|
|
6
|
+
source: community
|
|
7
|
+
source_repo: hafiz-actyte/idea-autopsy
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-07-10"
|
|
10
|
+
author: hafiz-actyte
|
|
11
|
+
tags: [business-ideas, idea-validation, market-research, startup, founders]
|
|
12
|
+
tools: [claude, cursor, gemini]
|
|
13
|
+
license: "MIT"
|
|
14
|
+
license_source: "https://github.com/hafiz-actyte/idea-autopsy/blob/main/LICENSE"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Idea Autopsy
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Turns the agent into a ruthless business-idea pathologist: instead of encouraging
|
|
22
|
+
the user, it hunts for the one sentence that kills an idea — before any money or
|
|
23
|
+
weeks are spent building it. Built from a real founder kill-list of 42 dead ideas
|
|
24
|
+
(including a 9/10-scored idea and one that turned out to be federally illegal to
|
|
25
|
+
charge for). Every autopsy ends in a hard verdict: DEAD with a named kill-pattern,
|
|
26
|
+
or SURVIVED with the one cheapest test that could still kill it.
|
|
27
|
+
|
|
28
|
+
## When to Use This Skill
|
|
29
|
+
|
|
30
|
+
- Use when the user proposes a new business, product, or side-project idea
|
|
31
|
+
- Use when the user asks "should I build X?" or "validate this idea"
|
|
32
|
+
- Use when the user says "autopsy my idea"
|
|
33
|
+
- Use before any market-research or build-planning task for a new venture
|
|
34
|
+
|
|
35
|
+
## How It Works
|
|
36
|
+
|
|
37
|
+
### Step 1: Kill-list check
|
|
38
|
+
|
|
39
|
+
If the project contains a `REJECTION.md` (the user's personal kill-list), read it
|
|
40
|
+
first. A NICHE match (same niche as a killed row) = verdict DEAD, cite the row,
|
|
41
|
+
stop. A KILL-PATTERN match alone (new niche, previously-seen pattern) is a strong
|
|
42
|
+
prior, NOT a verdict: name the matching pattern, then run the specific check for
|
|
43
|
+
that pattern (the relevant filter or test below) to confirm it actually applies
|
|
44
|
+
before declaring death. If no kill-list exists, ask the user for permission to create one
|
|
45
|
+
with exactly this schema — this autopsy writes its first row:
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
# REJECTION.md — my kill-list
|
|
49
|
+
|
|
50
|
+
## Killed ideas
|
|
51
|
+
|
|
52
|
+
| # | Idea/Niche | Killed (date) | Hard reason (one line) | Pattern |
|
|
53
|
+
|---|-----------|---------------|------------------------|---------|
|
|
54
|
+
|
|
55
|
+
## Survivors under test
|
|
56
|
+
|
|
57
|
+
| Idea | Passed filters (date) | Pending test | Deadline |
|
|
58
|
+
|------|----------------------|--------------|----------|
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Step 2: The five filters
|
|
62
|
+
|
|
63
|
+
Demand evidence, not optimism. One hard NO = dead.
|
|
64
|
+
|
|
65
|
+
1. **Real pain?** 2am-problem, or a nice-to-have "vitamin"?
|
|
66
|
+
2. **Buyer has money?** Right now — not after the product helps them.
|
|
67
|
+
3. **Proven demand?** Can the user name a single live competitor ad?
|
|
68
|
+
4. **Legal to charge for?** Regulated, licensed, or illegal in the target market? Name the law if suspicion exists.
|
|
69
|
+
5. **A moat?** What stops the 50th copycat next month?
|
|
70
|
+
|
|
71
|
+
### Step 3: The free-AI test
|
|
72
|
+
|
|
73
|
+
Try to produce the idea's core deliverable with one prompt to a frontier model.
|
|
74
|
+
If one prompt produces the whole deliverable free, the verdict is DEAD with
|
|
75
|
+
kill-pattern `free-AI`: the user doesn't have a product, they have a prompt.
|
|
76
|
+
|
|
77
|
+
### Step 4: Live-market verification (own eyes)
|
|
78
|
+
|
|
79
|
+
Desk research lies. Walk the user through the Meta Ad Library (or equivalent) with
|
|
80
|
+
an explicit checklist: number of ACTIVE advertisers, age of the oldest running ad
|
|
81
|
+
(90+ days = someone is paying because it works), and the three traps — zero ads
|
|
82
|
+
(`wrong-channel`), a few giants (`incumbent-owned`), or hundreds of ads
|
|
83
|
+
(`crowded` commodity knife-fight: demand ≠ room for you).
|
|
84
|
+
|
|
85
|
+
### Step 5: Verdict
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
VERDICT: DEAD | SURVIVED
|
|
89
|
+
KILL-PATTERN: <name> (if dead)
|
|
90
|
+
THE ONE SENTENCE: <the single finding that decided it>
|
|
91
|
+
EVIDENCE: <2-4 hard facts with sources/numbers>
|
|
92
|
+
NEXT: <if survived: the ONE cheapest test that could still kill it>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Then record the result — gated on consent: if `REJECTION.md` exists, or the user
|
|
96
|
+
approved creating it in Step 1, append a one-line row (dead) or note the survivor
|
|
97
|
+
with the date and pending test. If the user declined the kill-list, do NOT create
|
|
98
|
+
or write the file — print the proposed row as text so they can save it wherever
|
|
99
|
+
they prefer. The kill-list is the compounding asset — every autopsy makes the
|
|
100
|
+
next one faster, but only with the user's consent.
|
|
101
|
+
|
|
102
|
+
## Examples
|
|
103
|
+
|
|
104
|
+
### Example 1: Idea that dies on the free-AI test
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
User: Should I build a chargeback-response kit for Shopify sellers? Ready-to-send
|
|
108
|
+
evidence packets, $29 one-time.
|
|
109
|
+
Agent: Running the autopsy... Step 3 kills it: one prompt to a frontier model
|
|
110
|
+
produces a complete, usable evidence packet for free.
|
|
111
|
+
VERDICT: DEAD. KILL-PATTERN: free-AI.
|
|
112
|
+
THE ONE SENTENCE: If AI ships your whole deliverable in one prompt, you
|
|
113
|
+
don't have a product — you have a prompt.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Example 2: Proven demand that still dies
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
User: An app that identifies plants from a photo — there are over a thousand
|
|
120
|
+
active ads for these, demand is proven!
|
|
121
|
+
Agent: Step 4 confirms ~1,100 active advertisers — and that's the trap. The AI is
|
|
122
|
+
free, the datasets are public, everyone could build it, so everyone did.
|
|
123
|
+
VERDICT: DEAD. KILL-PATTERN: no-moat.
|
|
124
|
+
THE ONE SENTENCE: Demand tells you a market exists; it doesn't tell you
|
|
125
|
+
there's room for you.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Best Practices
|
|
129
|
+
|
|
130
|
+
- ✅ Demand a number, a law, a live ad, or a quote for every claim
|
|
131
|
+
- ✅ Treat a fast honest kill as a WIN — it saves weeks and dollars
|
|
132
|
+
- ✅ Make the user verify ad-library findings with their own eyes
|
|
133
|
+
- ❌ Don't soften verdicts to be encouraging — "it depends" is a failed autopsy
|
|
134
|
+
- ❌ Don't let buildability excitement skip the buyer questions; building was never the problem
|
|
135
|
+
|
|
136
|
+
## Limitations
|
|
137
|
+
|
|
138
|
+
- This skill does not replace legal advice, financial advice, or professional market research.
|
|
139
|
+
- Kill-patterns are priors, not verdicts — a new niche matching an old pattern still deserves a fresh check that the pattern applies.
|
|
140
|
+
- Ad-library checks reflect one acquisition channel; some categories legitimately sell through search or app stores.
|
|
141
|
+
- Stop and ask for clarification if the idea's target market, buyer, or deliverable is unclear.
|
|
142
|
+
|
|
143
|
+
## Security & Safety Notes
|
|
144
|
+
|
|
145
|
+
- This skill performs no shell commands, network calls, or credential handling.
|
|
146
|
+
- It modifies project state in exactly one place: creating or appending rows to the project's own `REJECTION.md` (hence `risk: critical`). It never edits other files; ask permission before creating the file on first run.
|
|
147
|
+
- Web checks (ad libraries) are performed by the USER in their own browser; the skill only provides the checklist.
|
|
@@ -34,4 +34,4 @@ The skill will provide the core strategic answer and then **ask** if you want to
|
|
|
34
34
|
- `examples/hospital-management-scenarios.md`: Crisis in ICU, Audit Prep, and AI Roadmaps.
|
|
35
35
|
|
|
36
36
|
---
|
|
37
|
-
*Powered by
|
|
37
|
+
*Powered by Agentic Skills Ecosystem.*
|
|
@@ -55,7 +55,7 @@ formats across every session.
|
|
|
55
55
|
|
|
56
56
|
**Python 3.8 or later** must be available in your shell path.
|
|
57
57
|
|
|
58
|
-
The skill is self-contained. Install it from the
|
|
58
|
+
The skill is self-contained. Install it from the Agentic Awesome Skills library:
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
61
|
# Install via antigravity CLI (recommended)
|
|
@@ -30,7 +30,7 @@ def detect_project_type(project_path: Path) -> dict:
|
|
|
30
30
|
"type": "unknown",
|
|
31
31
|
"linters": []
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
# Node.js project
|
|
35
35
|
package_json = project_path / "package.json"
|
|
36
36
|
if package_json.exists():
|
|
@@ -39,31 +39,31 @@ def detect_project_type(project_path: Path) -> dict:
|
|
|
39
39
|
pkg = json.loads(package_json.read_text(encoding='utf-8'))
|
|
40
40
|
scripts = pkg.get("scripts", {})
|
|
41
41
|
deps = {**pkg.get("dependencies", {}), **pkg.get("devDependencies", {})}
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
# Check for lint script
|
|
44
44
|
if "lint" in scripts:
|
|
45
45
|
result["linters"].append({"name": "npm lint", "cmd": ["npm", "run", "lint"]})
|
|
46
46
|
elif "eslint" in deps:
|
|
47
47
|
result["linters"].append({"name": "eslint", "cmd": ["npx", "eslint", "."]})
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
# Check for TypeScript
|
|
50
50
|
if "typescript" in deps or (project_path / "tsconfig.json").exists():
|
|
51
51
|
result["linters"].append({"name": "tsc", "cmd": ["npx", "tsc", "--noEmit"]})
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
except:
|
|
54
54
|
pass
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
# Python project
|
|
57
57
|
if (project_path / "pyproject.toml").exists() or (project_path / "requirements.txt").exists():
|
|
58
58
|
result["type"] = "python"
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
# Check for ruff
|
|
61
61
|
result["linters"].append({"name": "ruff", "cmd": ["ruff", "check", "."]})
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
# Check for mypy
|
|
64
64
|
if (project_path / "mypy.ini").exists() or (project_path / "pyproject.toml").exists():
|
|
65
65
|
result["linters"].append({"name": "mypy", "cmd": ["mypy", "."]})
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
return result
|
|
68
68
|
|
|
69
69
|
|
|
@@ -75,7 +75,7 @@ def run_linter(linter: dict, cwd: Path) -> dict:
|
|
|
75
75
|
"output": "",
|
|
76
76
|
"error": ""
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
try:
|
|
80
80
|
proc = subprocess.run(
|
|
81
81
|
linter["cmd"],
|
|
@@ -86,36 +86,36 @@ def run_linter(linter: dict, cwd: Path) -> dict:
|
|
|
86
86
|
errors='replace',
|
|
87
87
|
timeout=120
|
|
88
88
|
)
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
result["output"] = proc.stdout[:2000] if proc.stdout else ""
|
|
91
91
|
result["error"] = proc.stderr[:500] if proc.stderr else ""
|
|
92
92
|
result["passed"] = proc.returncode == 0
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
except FileNotFoundError:
|
|
95
95
|
result["error"] = f"Command not found: {linter['cmd'][0]}"
|
|
96
96
|
except subprocess.TimeoutExpired:
|
|
97
97
|
result["error"] = "Timeout after 120s"
|
|
98
98
|
except Exception as e:
|
|
99
99
|
result["error"] = str(e)
|
|
100
|
-
|
|
100
|
+
|
|
101
101
|
return result
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
def main():
|
|
105
105
|
project_path = Path(sys.argv[1] if len(sys.argv) > 1 else ".").resolve()
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
print(f"\n{'='*60}")
|
|
108
108
|
print(f"[LINT RUNNER] Unified Linting")
|
|
109
109
|
print(f"{'='*60}")
|
|
110
110
|
print(f"Project: {project_path}")
|
|
111
111
|
print(f"Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
# Detect project type
|
|
114
114
|
project_info = detect_project_type(project_path)
|
|
115
115
|
print(f"Type: {project_info['type']}")
|
|
116
116
|
print(f"Linters: {len(project_info['linters'])}")
|
|
117
117
|
print("-"*60)
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
if not project_info["linters"]:
|
|
120
120
|
print("No linters found for this project type.")
|
|
121
121
|
output = {
|
|
@@ -128,16 +128,16 @@ def main():
|
|
|
128
128
|
}
|
|
129
129
|
print(json.dumps(output, indent=2))
|
|
130
130
|
sys.exit(0)
|
|
131
|
-
|
|
131
|
+
|
|
132
132
|
# Run each linter
|
|
133
133
|
results = []
|
|
134
134
|
all_passed = True
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
for linter in project_info["linters"]:
|
|
137
137
|
print(f"\nRunning: {linter['name']}...")
|
|
138
138
|
result = run_linter(linter, project_path)
|
|
139
139
|
results.append(result)
|
|
140
|
-
|
|
140
|
+
|
|
141
141
|
if result["passed"]:
|
|
142
142
|
print(f" [PASS] {linter['name']}")
|
|
143
143
|
else:
|
|
@@ -145,16 +145,16 @@ def main():
|
|
|
145
145
|
if result["error"]:
|
|
146
146
|
print(f" Error: {result['error'][:200]}")
|
|
147
147
|
all_passed = False
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
# Summary
|
|
150
150
|
print("\n" + "="*60)
|
|
151
151
|
print("SUMMARY")
|
|
152
152
|
print("="*60)
|
|
153
|
-
|
|
153
|
+
|
|
154
154
|
for r in results:
|
|
155
155
|
icon = "[PASS]" if r["passed"] else "[FAIL]"
|
|
156
156
|
print(f"{icon} {r['name']}")
|
|
157
|
-
|
|
157
|
+
|
|
158
158
|
output = {
|
|
159
159
|
"script": "lint_runner",
|
|
160
160
|
"project": str(project_path),
|
|
@@ -162,9 +162,9 @@ def main():
|
|
|
162
162
|
"checks": results,
|
|
163
163
|
"passed": all_passed
|
|
164
164
|
}
|
|
165
|
-
|
|
165
|
+
|
|
166
166
|
print("\n" + json.dumps(output, indent=2))
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
sys.exit(0 if all_passed else 1)
|
|
169
169
|
|
|
170
170
|
|
|
@@ -20,36 +20,36 @@ def check_typescript_coverage(project_path: Path) -> dict:
|
|
|
20
20
|
issues = []
|
|
21
21
|
passed = []
|
|
22
22
|
stats = {'any_count': 0, 'untyped_functions': 0, 'total_functions': 0}
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
ts_files = list(project_path.rglob("*.ts")) + list(project_path.rglob("*.tsx"))
|
|
25
25
|
ts_files = [f for f in ts_files if 'node_modules' not in str(f) and '.d.ts' not in str(f)]
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
if not ts_files:
|
|
28
28
|
return {'type': 'typescript', 'files': 0, 'passed': [], 'issues': ["[!] No TypeScript files found"], 'stats': stats}
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
for file_path in ts_files[:30]: # Limit
|
|
31
31
|
try:
|
|
32
32
|
content = file_path.read_text(encoding='utf-8', errors='ignore')
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
# Count 'any' usage
|
|
35
35
|
any_matches = re.findall(r':\s*any\b', content)
|
|
36
36
|
stats['any_count'] += len(any_matches)
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
# Find functions without return types
|
|
39
39
|
# function name(params) { - no return type
|
|
40
40
|
untyped = re.findall(r'function\s+\w+\s*\([^)]*\)\s*{', content)
|
|
41
41
|
# Arrow functions without types: const fn = (x) => or (x) =>
|
|
42
42
|
untyped += re.findall(r'=\s*\([^:)]*\)\s*=>', content)
|
|
43
43
|
stats['untyped_functions'] += len(untyped)
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
# Count typed functions
|
|
46
46
|
typed = re.findall(r'function\s+\w+\s*\([^)]*\)\s*:\s*\w+', content)
|
|
47
47
|
typed += re.findall(r':\s*\([^)]*\)\s*=>\s*\w+', content)
|
|
48
48
|
stats['total_functions'] += len(typed) + len(untyped)
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
except Exception:
|
|
51
51
|
continue
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
# Analyze results
|
|
54
54
|
if stats['any_count'] == 0:
|
|
55
55
|
passed.append("[OK] No 'any' types found")
|
|
@@ -57,7 +57,7 @@ def check_typescript_coverage(project_path: Path) -> dict:
|
|
|
57
57
|
issues.append(f"[!] {stats['any_count']} 'any' types found (acceptable)")
|
|
58
58
|
else:
|
|
59
59
|
issues.append(f"[X] {stats['any_count']} 'any' types found (too many)")
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
if stats['total_functions'] > 0:
|
|
62
62
|
typed_ratio = (stats['total_functions'] - stats['untyped_functions']) / stats['total_functions'] * 100
|
|
63
63
|
if typed_ratio >= 80:
|
|
@@ -66,9 +66,9 @@ def check_typescript_coverage(project_path: Path) -> dict:
|
|
|
66
66
|
issues.append(f"[!] Type coverage: {typed_ratio:.0f}% (improve)")
|
|
67
67
|
else:
|
|
68
68
|
issues.append(f"[X] Type coverage: {typed_ratio:.0f}% (too low)")
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
passed.append(f"[OK] Analyzed {len(ts_files)} TypeScript files")
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
return {'type': 'typescript', 'files': len(ts_files), 'passed': passed, 'issues': issues, 'stats': stats}
|
|
73
73
|
|
|
74
74
|
def check_python_coverage(project_path: Path) -> dict:
|
|
@@ -76,35 +76,35 @@ def check_python_coverage(project_path: Path) -> dict:
|
|
|
76
76
|
issues = []
|
|
77
77
|
passed = []
|
|
78
78
|
stats = {'untyped_functions': 0, 'typed_functions': 0, 'any_count': 0}
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
py_files = list(project_path.rglob("*.py"))
|
|
81
81
|
py_files = [f for f in py_files if not any(x in str(f) for x in ['venv', '__pycache__', '.git', 'node_modules'])]
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
if not py_files:
|
|
84
84
|
return {'type': 'python', 'files': 0, 'passed': [], 'issues': ["[!] No Python files found"], 'stats': stats}
|
|
85
|
-
|
|
85
|
+
|
|
86
86
|
for file_path in py_files[:30]: # Limit
|
|
87
87
|
try:
|
|
88
88
|
content = file_path.read_text(encoding='utf-8', errors='ignore')
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
# Count Any usage
|
|
91
91
|
any_matches = re.findall(r':\s*Any\b', content)
|
|
92
92
|
stats['any_count'] += len(any_matches)
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
# Find functions with type hints
|
|
95
95
|
typed_funcs = re.findall(r'def\s+\w+\s*\([^)]*:[^)]+\)', content)
|
|
96
96
|
typed_funcs += re.findall(r'def\s+\w+\s*\([^)]*\)\s*->', content)
|
|
97
97
|
stats['typed_functions'] += len(typed_funcs)
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
# Find functions without type hints
|
|
100
100
|
all_funcs = re.findall(r'def\s+\w+\s*\(', content)
|
|
101
101
|
stats['untyped_functions'] += len(all_funcs) - len(typed_funcs)
|
|
102
|
-
|
|
102
|
+
|
|
103
103
|
except Exception:
|
|
104
104
|
continue
|
|
105
|
-
|
|
105
|
+
|
|
106
106
|
total = stats['typed_functions'] + stats['untyped_functions']
|
|
107
|
-
|
|
107
|
+
|
|
108
108
|
if total > 0:
|
|
109
109
|
typed_ratio = stats['typed_functions'] / total * 100
|
|
110
110
|
if typed_ratio >= 70:
|
|
@@ -113,42 +113,42 @@ def check_python_coverage(project_path: Path) -> dict:
|
|
|
113
113
|
issues.append(f"[!] Type hints coverage: {typed_ratio:.0f}%")
|
|
114
114
|
else:
|
|
115
115
|
issues.append(f"[X] Type hints coverage: {typed_ratio:.0f}% (add type hints)")
|
|
116
|
-
|
|
116
|
+
|
|
117
117
|
if stats['any_count'] == 0:
|
|
118
118
|
passed.append("[OK] No 'Any' types found")
|
|
119
119
|
elif stats['any_count'] <= 3:
|
|
120
120
|
issues.append(f"[!] {stats['any_count']} 'Any' types found")
|
|
121
121
|
else:
|
|
122
122
|
issues.append(f"[X] {stats['any_count']} 'Any' types found")
|
|
123
|
-
|
|
123
|
+
|
|
124
124
|
passed.append(f"[OK] Analyzed {len(py_files)} Python files")
|
|
125
|
-
|
|
125
|
+
|
|
126
126
|
return {'type': 'python', 'files': len(py_files), 'passed': passed, 'issues': issues, 'stats': stats}
|
|
127
127
|
|
|
128
128
|
def main():
|
|
129
129
|
target = sys.argv[1] if len(sys.argv) > 1 else "."
|
|
130
130
|
project_path = Path(target)
|
|
131
|
-
|
|
131
|
+
|
|
132
132
|
print("\n" + "=" * 60)
|
|
133
133
|
print(" TYPE COVERAGE CHECKER")
|
|
134
134
|
print("=" * 60 + "\n")
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
results = []
|
|
137
|
-
|
|
137
|
+
|
|
138
138
|
# Check TypeScript
|
|
139
139
|
ts_result = check_typescript_coverage(project_path)
|
|
140
140
|
if ts_result['files'] > 0:
|
|
141
141
|
results.append(ts_result)
|
|
142
|
-
|
|
142
|
+
|
|
143
143
|
# Check Python
|
|
144
144
|
py_result = check_python_coverage(project_path)
|
|
145
145
|
if py_result['files'] > 0:
|
|
146
146
|
results.append(py_result)
|
|
147
|
-
|
|
147
|
+
|
|
148
148
|
if not results:
|
|
149
149
|
print("[!] No TypeScript or Python files found.")
|
|
150
150
|
sys.exit(0)
|
|
151
|
-
|
|
151
|
+
|
|
152
152
|
# Print results
|
|
153
153
|
critical_issues = 0
|
|
154
154
|
for result in results:
|
|
@@ -160,7 +160,7 @@ def main():
|
|
|
160
160
|
print(f" {item}")
|
|
161
161
|
if item.startswith("[X]"):
|
|
162
162
|
critical_issues += 1
|
|
163
|
-
|
|
163
|
+
|
|
164
164
|
print("\n" + "=" * 60)
|
|
165
165
|
if critical_issues == 0:
|
|
166
166
|
print("[OK] TYPE COVERAGE: ACCEPTABLE")
|
|
@@ -47,7 +47,7 @@ Logic Lens uses Claude Code's reasoning capabilities to:
|
|
|
47
47
|
# Search: "logic-lens" in Claude Code > Extensions
|
|
48
48
|
|
|
49
49
|
# Or install via NPX (Antigravity)
|
|
50
|
-
npx
|
|
50
|
+
npx agentic-awesome-skills --claude
|
|
51
51
|
# Then invoke: @logic-lens
|
|
52
52
|
```
|
|
53
53
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 TheaDust
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|