ReferencesManifest Types

Manifest Types

The plugin uses dependency manifests to discover the project’s tech stack. Detection walks the repo up to 3 levels deep, skipping node_modules, vendor, .venv, target, build, .gradle, and .dart_tool.

Manifests by ecosystem

Node / JavaScript / TypeScript

FileRole
package.jsonUniversal
pnpm-workspace.yamlpnpm monorepo
turbo.jsonTurborepo
nx.json + workspace.jsonNx monorepo
bun.lockbBun runtime hint
deno.json / deno.jsoncDeno

Python

FileRole
pyproject.tomlModern projects (poetry, hatch, pdm)
setup.py / setup.cfgOlder setuptools
requirements.txt / requirements-*.txtpip pinned deps
Pipfilepipenv
environment.ymlconda

Go / Rust / Ruby

FileEcosystem
go.modGo modules
Cargo.toml / rust-toolchain.tomlRust
Gemfile / *.gemspec / RakefileRuby

JVM (Java / Kotlin / Scala / Clojure)

FileRole
pom.xmlMaven
build.gradle / build.gradle.ktsGradle
build.sbtScala SBT
project.clj / deps.ednClojure

.NET

FileRole
*.csproj / *.fsproj / *.slnProject and solution
Directory.Build.propsCentral package management
global.jsonSDK version pin

Mobile and cross-platform

FileEcosystem
pubspec.yamlFlutter / Dart
melos.yamlDart monorepo (Melos)
Package.swiftSwiftPM (iOS)
PodfileCocoaPods (iOS)
app.json / app.config.tsReact Native / Expo

Infrastructure

FileTool
Dockerfile / compose.yamlDocker
terraform/**/*.tfTerraform
helm/Chart.yamlHelm
cdk.jsonAWS CDK
Pulumi.yamlPulumi
ansible.cfgAnsible

CI

FilePlatform
.github/workflows/*.ymlGitHub Actions
.gitlab-ci.ymlGitLab CI
JenkinsfileJenkins
azure-pipelines.ymlAzure Pipelines
.circleci/config.ymlCircleCI

Classification logic

After collecting manifests, the plugin determines project_type and sub_type:

pubspec.yaml present → Flutter
package.json with react-native/expo deps → React Native
package.json with react/next/vue/svelte → Frontend SPA
package.json with nest/express/fastify → Backend Node
go.mod → Go
Cargo.toml → Rust
pubspec.yaml (no mobile dirs) → Dart
pom.xml / build.gradle → JVM

No manifest found

If no recognized manifest is found, the plugin does not guess the stack. It asks you to declare the stack in a ## Stack section inside CLAUDE.md before proceeding.