project-analyzer
Skill68 starsChanged 6 months agoMITView on GitHub
Detects a project's technology stack, framework, deploy target, ORM, primary language, and active payment use cases by reading package.json/pyproject.toml/composer.json/Gemfile, schema files, route files, and deploy configs. Use this skill at the start of any PagoKit flow to ground recommendations in the real project context. Emits a structured detection result for payment-advisor and integration-specialist to consume.
8 other projects use a version of this.
Adopted by
Most recently taken up by
- maroffo/claude-forgetheir own version, first seen Oct 25, 2026
- 10CG/aria-plugintheir own version, first seen Oct 20, 2026
- fatih-developer/fth-skillstheir own version, first seen Oct 13, 2026
- ForceInjection/awesome-skillstheir own version, first seen Oct 13, 2026
- ZeroTokenClaw/agents-skillstheir own version, first seen Sep 21, 2026
- chipoto69/claude-skillstheir own version, first seen Jan 19, 2026
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- ForceInjection/awesome-skills★ 87same name
- maroffo/claude-forge★ 17same name
- GrishaAngelovGH/gemini-cli-agent-skills★ 16same name
- fatih-developer/fth-skills★ 7same name
- mevans2120/project-suite-claude-skills★ 4same name
- chipoto69/claude-skills★ 2same name
- 10CG/aria-plugin★ 1same name
- ZeroTokenClaw/agents-skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository7 other files it gives its agents.
- doctorSkill
- integration-builderSkill
- payment-advisorSkill
- payment-migratorSkill
- subscription-lifecycleSkill
- tax-advisorSkill
- webhook-verifierSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 4 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 34
Default to unknown if no clear signal.
- Very specific: line 50
Default none (developer runs locally / self-hosted).
- Distinctive: line 62
When found, read the file and extract table/model names.
- Distinctive: line 84
If ambiguous, the language of the project's README.md.
- Very specific: line 91
If the project lacks both a route file AND a schema file AND the README is empty/missing, mark greenfield: true.
- Distinctive: line 124
Do not ask the user any questions in this skill — that is payment-advisor's role.
- Very specific: line 125
Do not assume the project's framework from filenames alone (app/ exists in many setups.
- Very specific: line 126
Do not read every file in the repo.
- Very specific: line 127
Do not invent a deploy target.
- Distinctive: line 128
Do not classify the product type with confidence > 0.6 if the only signal is the README — ask payment-advisor to confirm.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!-- Copyright (c) 2026 Enrique Rocha (@soyenriquerocha) · tododeia.com · id er-fee52fa9 -->project-analyzer
You inspect the user's project and emit a structured detection report that downstream PagoKit skills consume. You do NOT recommend a payment method — that is payment-advisor's job. You also do NOT write any files.
What you read (in order)
- Manifests — first hit wins for stack detection:
package.json(Node.js / Bun ecosystem)pyproject.toml,requirements.txt,Pipfile(Python)composer.json(PHP)Gemfile(Ruby)go.mod(Go)*.csproj,*.fsproj(.NET)
- Framework signal — look at dependencies:
next→nextjs-app-routerifapp/directory exists, elsenextjs-pages-routerexpress→express@nestjs/core→nestjsfastapi→fastapidjango→djangoflask→flasklaravel/framework→laravel- Rails: presence of
Gemfile+config/application.rb - Default to
unknownif no clear signal.
- ORM — look at deps + presence of schema files:
@prisma/client+prisma/schema.prisma→prismadrizzle-orm+drizzle.config.*→drizzlesqlalchemy+alembic.ini→sqlalchemyactiverecord(implicit in Rails) →active-recordtypeorm→typeorm(Phase 2)- Default
none.
- Deploy target — look at config files (read existence, not contents):
vercel.jsonor.vercel/→vercelrailway.toml,railway.json→railwayrender.yaml→renderfly.toml→flyProcfile(and no other PaaS file) →herokuamplify.yml→aws-amplifywrangler.toml,wrangler.jsonc→cloudflare-workers- Default
none(developer runs locally / self-hosted).
- Route files — Glob for:
app/**/route.{ts,js}(Next.js App Router)pages/api/**/*.{ts,js}(Next.js Pages Router)routes/*.{js,ts,php,rb}urls.py,main.py,app.py- The list helps Rule 7 (existing webhook detection) and confirms a real backend exists.
- DB schema — Glob for:
prisma/schema.prismadrizzle/schema.{ts,js}or**/schema/*.tsalembic/versions/*.pydb/schema.rb- When found, read the file and extract table/model names; feed them into the use_cases trigger_heuristics check.
- README + CLAUDE.md — read both to extract a one-sentence product description. Use this for:
- Product type guess (saas / ecommerce / digital_goods / donations / marketplace).
- Language fallback (if user's prompt language is ambiguous).
Use case detection
Load skills/payment-advisor/data/use_cases.json. For each use case, evaluate every trigger_heuristics entry (formal syntax in HEURISTICS.md). Compute a confidence score:
confidence = matches / total_heuristicsMark a use case as detected if confidence >= confidence_threshold. Mark as ambiguous if 0 < confidence < threshold. Mark as not present if confidence == 0.
For ambiguous use cases, payment-advisor will ask the ask_if_below_threshold question. For detected use cases, payment-advisor proceeds without asking.
Language detection
The agent's output language is determined in this priority:
- The language of the user's first prompt to
/pagokit:start(Spanish / English / Portuguese / French / German). - If ambiguous, the language of the project's
README.md. - Default: English.
Detect Spanish if you see common ES words: "vender", "tienda", "pago", "suscripción", "carrito", "tarjeta". Portuguese for BR: "venda", "pagamento", "assinatura", "cartão".
Greenfield mode
If the project lacks both a route file AND a schema file AND the README is empty/missing, mark greenfield: true. payment-advisor will skip the "I detected X — correct?" confirmation and instead ask "What do you plan to sell?".
Output format (structured)
Emit your detection report in this exact JSON-like shape (in a fenced ```json block in your reply), then continue in natural language:
{
"stack": "nextjs-app-router|nextjs-pages-router|express|nestjs|fastapi|django|flask|laravel|rails|go-gin|dotnet|hono|unknown",
"framework_version": "string or null",
"language": "es|en|pt|fr|de|other",
"deploy_target": "vercel|railway|render|fly|heroku|aws-amplify|cloudflare-workers|none",
"orm": "prisma|drizzle|sqlalchemy|active-record|typeorm|none",
"package_manager": "npm|pnpm|yarn|bun|pip|poetry|composer|bundler|other",
"route_files": ["app/api/checkout/route.ts", "..."],
"schema_files": ["prisma/schema.prisma"],
"existing_webhook_paths": ["/api/webhook (Clerk)"],
"use_cases": {
"marketplace": {"confidence": 0.0, "status": "not_present"},
"mobile_digital_goods": {"confidence": 0.0, "status": "not_present"},
"save_card_subscription": {"confidence": 0.5, "status": "ambiguous"},
"creator_donations": {"confidence": 0.0, "status": "not_present"}
},
"product_type_guess": "saas|ecommerce|digital_goods|donations|marketplace|unknown",
"product_description": "One-line summary from README/CLAUDE.md or null",
"greenfield": false
}Then immediately follow up in natural language (in the detected language) with a one-paragraph human summary that payment-advisor will use as the "I detected X — correct?" confirmation step.
Anti-patterns
- Do not ask the user any questions in this skill — that is payment-advisor's role.
- Do not assume the project's framework from filenames alone (
app/exists in many setups; require both directory and dependency). - Do not read every file in the repo. Stop at manifests + schema + route files + README/CLAUDE.md. A full read costs tokens and rarely changes the detection.
- Do not invent a deploy target. If no config file matches, the answer is
none. - Do not classify the product type with confidence > 0.6 if the only signal is the README — ask payment-advisor to confirm.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

