Help us improve
Share bugs, ideas, or general feedback.
From pagokit
Detects a project's technology stack, framework, ORM, deploy target, and primary language by reading manifests and config files. Emits a structured report for downstream PagoKit skills.
npx claudepluginhub hainrixz/agente-pagokitHow this skill is triggered — by the user, by Claude, or both
Slash command
/pagokit:project-analyzerWhen to use
- Beginning of /pagokit:start, before asking the user any questions - When integration-specialist needs to know stack + ORM + deploy target before writing files - When /pagokit:doctor audits an existing integration
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Runs a multi-phase verification pipeline for Laravel projects: environment checks, Composer validation, linting (Pint), static analysis (PHPStan/Psalm), tests with coverage, security audit (Composer audit), migration review, build readiness (config/route/view cache), and queue/scheduler checks.
Share bugs, ideas, or general feedback.
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.
package.json (Node.js / Bun ecosystem)pyproject.toml, requirements.txt, Pipfile (Python)composer.json (PHP)Gemfile (Ruby)go.mod (Go)*.csproj, *.fsproj (.NET)next → nextjs-app-router if app/ directory exists, else nextjs-pages-routerexpress → express@nestjs/core → nestjsfastapi → fastapidjango → djangoflask → flasklaravel/framework → laravelGemfile + config/application.rbunknown if no clear signal.@prisma/client + prisma/schema.prisma → prismadrizzle-orm + drizzle.config.* → drizzlesqlalchemy + alembic.ini → sqlalchemyactiverecord (implicit in Rails) → active-recordtypeorm → typeorm (Phase 2)none.vercel.json or .vercel/ → vercelrailway.toml, railway.json → railwayrender.yaml → renderfly.toml → flyProcfile (and no other PaaS file) → herokuamplify.yml → aws-amplifywrangler.toml, wrangler.jsonc → cloudflare-workersnone (developer runs locally / self-hosted).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.pyprisma/schema.prismadrizzle/schema.{ts,js} or **/schema/*.tsalembic/versions/*.pydb/schema.rbLoad 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_heuristics
Mark 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.
The agent's output language is determined in this priority:
/pagokit:start (Spanish / English / Portuguese / French / German).README.md.Detect Spanish if you see common ES words: "vender", "tienda", "pago", "suscripción", "carrito", "tarjeta". Portuguese for BR: "venda", "pagamento", "assinatura", "cartão".
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?".
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.
app/ exists in many setups; require both directory and dependency).none.