Claude
Skills
Sign in
Back

project-fingerprinting

Included with Lifetime
$97 forever

Deep project fingerprinting for tech stack detection, architecture analysis, and quality assessment

Generalupgrade-suggestionfingerprintingdetectionanalysis

What this skill does


# Project Fingerprinting Skill

Comprehensive project fingerprinting system that builds a multi-dimensional profile
of any codebase. Used by the upgrade council to give specialist agents targeted
context, eliminating irrelevant analysis and enabling framework-specific recommendations.

## Fingerprint Schema

```yaml
fingerprint:
  # Core identity
  name: string           # from package.json name or directory
  language: string       # primary language
  languages: string[]    # all detected languages

  # Framework detection
  frameworks:
    frontend: string[]   # react, vue, angular, svelte, next, nuxt, etc.
    backend: string[]    # express, fastapi, django, nestjs, flask, etc.
    meta: string[]       # next (fullstack), nuxt (fullstack), remix, etc.
    mobile: string[]     # react-native, flutter, expo, etc.

  # Infrastructure
  infrastructure:
    containerized: boolean
    container_tool: docker | podman | none
    orchestrated: boolean
    orchestrator: kubernetes | docker-compose | nomad | none
    ci_cd: github-actions | gitlab-ci | jenkins | circle-ci | azure-pipelines | none
    cloud: aws | gcp | azure | vercel | netlify | none
    iac: terraform | pulumi | cdk | cloudformation | none
    monitoring: prometheus | datadog | newrelic | none

  # Architecture
  architecture:
    pattern: monolith | monorepo | microservices | serverless | jamstack
    api_style: rest | graphql | grpc | trpc | mixed | none
    state_management: redux | zustand | jotai | recoil | mobx | context | pinia | vuex | none
    orm: prisma | drizzle | typeorm | sequelize | sqlalchemy | django-orm | none
    database: postgres | mysql | mongodb | sqlite | redis | none
    auth: nextauth | clerk | auth0 | keycloak | passport | custom | none
    monorepo_tool: nx | turborepo | lerna | pnpm-workspaces | none

  # Quality signals
  quality:
    typescript:
      enabled: boolean
      strict: boolean
      strict_null_checks: boolean
      no_implicit_any: boolean
    linter:
      tool: eslint | biome | none
      config_format: flat | legacy | none
    formatter:
      tool: prettier | biome | none
    testing:
      framework: jest | vitest | pytest | go-test | none
      coverage_configured: boolean
      e2e_framework: playwright | cypress | puppeteer | none
    pre_commit: husky | lefthook | pre-commit | none
    dependency_updates: dependabot | renovate | none

  # Scale metrics
  scale:
    file_count: number
    src_lines: number       # approximate
    dependency_count: number
    dev_dependency_count: number
    contributor_count: number  # from git log --format='%ae' | sort -u | wc -l
    commit_count_30d: number   # activity level
    age_days: number           # first commit to now

  # Package manager
  package_manager: npm | pnpm | yarn | bun | pip | cargo | go-mod | maven | gradle
```

## Detection Rules

### Language Detection (priority order)

| Check | Language | Confidence |
|-------|----------|------------|
| `tsconfig.json` exists | TypeScript | 0.95 |
| `*.ts` files in `src/` | TypeScript | 0.90 |
| `package.json` exists (no TS) | JavaScript | 0.85 |
| `pyproject.toml` or `requirements.txt` | Python | 0.95 |
| `go.mod` | Go | 0.95 |
| `Cargo.toml` | Rust | 0.95 |
| `pom.xml` or `build.gradle` | Java/Kotlin | 0.90 |
| `*.rb` + `Gemfile` | Ruby | 0.90 |
| `*.cs` + `*.csproj` | C# | 0.90 |
| `*.swift` + `Package.swift` | Swift | 0.90 |

### Framework Detection (package.json dependencies)

| Dependency | Framework | Category |
|-----------|-----------|----------|
| `next` | Next.js | meta-framework |
| `react`, `react-dom` | React | frontend |
| `vue` | Vue.js | frontend |
| `@angular/core` | Angular | frontend |
| `svelte`, `@sveltejs/kit` | Svelte/SvelteKit | frontend/meta |
| `express` | Express | backend |
| `fastify` | Fastify | backend |
| `@nestjs/core` | NestJS | backend |
| `hono` | Hono | backend |
| `@remix-run/node` | Remix | meta-framework |
| `astro` | Astro | meta-framework |
| `nuxt` | Nuxt | meta-framework |
| `gatsby` | Gatsby | meta-framework |
| `react-native` | React Native | mobile |
| `expo` | Expo | mobile |

### Python Framework Detection (requirements/pyproject)

| Dependency | Framework |
|-----------|-----------|
| `fastapi` | FastAPI |
| `django` | Django |
| `flask` | Flask |
| `starlette` | Starlette |
| `tornado` | Tornado |
| `aiohttp` | aiohttp |

### Infrastructure Detection (file/directory patterns)

| Pattern | Infrastructure | Type |
|---------|---------------|------|
| `Dockerfile` | Docker | container |
| `docker-compose.yml` | Docker Compose | orchestrator |
| `Chart.yaml` | Helm | orchestrator |
| `k8s/`, `kubernetes/` | Kubernetes | orchestrator |
| `.github/workflows/` | GitHub Actions | ci_cd |
| `.gitlab-ci.yml` | GitLab CI | ci_cd |
| `Jenkinsfile` | Jenkins | ci_cd |
| `terraform/`, `*.tf` | Terraform | iac |
| `Pulumi.yaml` | Pulumi | iac |
| `vercel.json` | Vercel | cloud |
| `netlify.toml` | Netlify | cloud |
| `firebase.json` | Firebase | cloud |
| `serverless.yml` | Serverless FW | cloud |
| `fly.toml` | Fly.io | cloud |
| `render.yaml` | Render | cloud |

### Quality Detection

| Check | Detection |
|-------|-----------|
| `tsconfig.json` → `"strict": true` | TypeScript strict mode |
| `.eslintrc*` or `eslint.config.*` | ESLint configured |
| `.prettierrc*` or `prettier.config.*` | Prettier configured |
| `jest.config.*` or `vitest.config.*` | Test framework |
| `.husky/` directory | Pre-commit hooks |
| `renovate.json` or `.github/dependabot.yml` | Auto dependency updates |
| `playwright.config.*` or `cypress.config.*` | E2E testing |
| `biome.json` or `biome.jsonc` | Biome (lint + format) |

### Architecture Pattern Detection

| Signal | Pattern |
|--------|---------|
| `packages/` or `apps/` directory | Monorepo |
| `turbo.json` or `nx.json` | Monorepo (confirmed) |
| Multiple `Dockerfile`s + `docker-compose.yml` | Microservices |
| `serverless.yml` + `functions/` | Serverless |
| Single `src/` with both API + UI | Monolith |
| `pages/` or `app/` (Next.js) + `api/` | Fullstack monolith |

## Quick Commands for Fingerprinting

```bash
# One-shot fingerprint collection script
echo "=== PACKAGE.JSON ===" && cat package.json 2>/dev/null | head -80
echo "=== TSCONFIG ===" && cat tsconfig.json 2>/dev/null | head -30
echo "=== DIR STRUCTURE ===" && ls -la src/ 2>/dev/null
echo "=== KEY FILES ===" && ls Dockerfile docker-compose.yml Chart.yaml .github/workflows/ 2>/dev/null
echo "=== GIT STATS ===" && git log --oneline --since='30 days ago' 2>/dev/null | wc -l
echo "=== CONTRIBUTORS ===" && git log --format='%ae' 2>/dev/null | sort -u | wc -l
echo "=== FILE COUNT ===" && find src/ -name '*.ts' -o -name '*.tsx' -o -name '*.py' -o -name '*.go' 2>/dev/null | wc -l
echo "=== LINE COUNT ===" && find src/ -name '*.ts' -o -name '*.tsx' 2>/dev/null | xargs wc -l 2>/dev/null | tail -1
```

## Framework-Specific Signal Boosters

When a framework is detected, enable additional specialist checks:

### Next.js Projects
- Check for `next/image` usage (vs raw `<img>`)
- Check for `getServerSideProps` vs `getStaticProps` (SSR vs SSG opportunities)
- Check App Router vs Pages Router
- Check for middleware usage
- Check for ISR (Incremental Static Regeneration)

### React SPA
- Check for React.lazy + Suspense (code splitting)
- Check for React.memo on frequently re-rendered components
- Check for proper key usage in lists
- Check for StrictMode enabled

### Express/Fastify Backend
- Check for middleware ordering (helmet, cors, compression)
- Check for request validation (Zod, Joi, express-validator)
- Check for rate limiting
- Check for error handling middleware

### FastAPI/Django
- Check for async endpoint usage (FastAPI)
- Check for Pydantic model usage
- Check for middleware stack
- Check for CORS configuration

## Output

The fingerprint is passed to all council agents as context. It determines:
1. Which specialist agents are most relevant to spawn
2. Which detection patterns each specialist should focus on
3. F

Related in General