Project type detection matrix, template recommendations per project type, post-scaffolding checklist, Harness integration patterns, and testing recommendations
Generates project scaffolds with type detection, templates, and Harness integration patterns.
/plugin marketplace add markus41/claude/plugin install claude-code-templating@claude-orchestrationThis skill is limited to using the following tools:
Comprehensive guide to project type detection, template selection, post-scaffolding setup, Harness integration, and testing strategies.
Detection Priority:
Python Project:
✓ setup.py, pyproject.toml, or requirements.txt
✓ .python-version file
✓ Pipfile (Pipenv)
✓ poetry.lock (Poetry)
Node.js/JavaScript:
✓ package.json exists
✓ node_modules/ directory
✓ .npmrc or .yarnrc
✓ yarn.lock or package-lock.json
Java/JVM:
✓ pom.xml (Maven) or build.gradle (Gradle)
✓ src/main/java structure
✓ .java files present
Go:
✓ go.mod file
✓ *.go source files
✓ go.sum dependencies file
Rust:
✓ Cargo.toml
✓ src/ directory
✓ Cargo.lock
C#/.NET:
✓ *.csproj or *.sln files
✓ appsettings.json
✓ global.json
TypeScript:
✓ tsconfig.json
✓ *.ts or *.tsx files
✓ package.json with typescript dependency
Kubernetes/DevOps:
✓ Dockerfile
✓ docker-compose.yml
✓ k8s/ or helm/ directory
✓ Helmfile
Infrastructure as Code:
✓ *.tf files (Terraform)
✓ bicep/ directory (Azure Bicep)
✓ cloudformation.yaml (AWS CloudFormation)
Best Templates:
Template Structure:
{project_name}/
├── {project_name}/ # Main package
│ ├── __init__.py
│ ├── main.py
│ └── config.py
├── tests/ # Test directory
│ ├── __init__.py
│ ├── conftest.py # pytest fixtures
│ └── test_main.py
├── docs/ # Documentation
│ ├── conf.py # Sphinx config
│ ├── index.rst
│ └── api.rst
├── .gitignore
├── README.md
├── LICENSE
├── requirements.txt # Or pyproject.toml
├── setup.py # Or tool.poetry in pyproject.toml
├── pytest.ini
├── tox.ini # Multi-environment testing
└── Dockerfile
Key Variables:
project_name: str # Package name (lowercase, underscores)
author_name: str # Author name
author_email: str # Author email
python_version: str # Target version (3.9, 3.10, 3.11, 3.12)
use_poetry: bool # Use Poetry for dependency management
use_pytest: bool # Use pytest (default: true)
use_docker: bool # Include Dockerfile
include_cli: bool # Include Click CLI framework
Post-Scaffolding:
cd {project_name}
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
pytest tests/ # Verify test setup
Best Templates:
Template Structure:
{project_name}/
├── src/
│ ├── index.js
│ ├── config.js
│ └── utils/
├── tests/
│ ├── unit/
│ ├── integration/
│ └── fixtures/
├── public/ # Static assets
├── docs/
├── .env.example # Environment template
├── .eslintrc.json # ESLint config
├── .prettierrc.json # Code formatting
├── jest.config.js # Jest testing config
├── tsconfig.json # If using TypeScript
├── package.json
├── package-lock.json # Or yarn.lock / pnpm-lock.yaml
├── Dockerfile
├── docker-compose.yml
├── .gitignore
├── README.md
└── LICENSE
Key Variables:
project_name: str # Project name
author_name: str # Author
use_typescript: bool # TypeScript support
use_eslint: bool # ESLint (default: true)
use_prettier: bool # Code formatter
use_jest: bool # Jest testing
use_docker: bool # Docker support
use_express: bool # Express.js framework
package_manager: str # npm, yarn, pnpm
Post-Scaffolding:
cd {project_name}
npm install # or yarn / pnpm install
npm run lint # Check linting
npm run test # Run tests
npm run dev # Start development server
Best Templates:
Template Structure (Maven):
{project_name}/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/company/{project_name}/
│ │ │ ├── App.java
│ │ │ └── service/
│ │ └── resources/
│ │ └── application.properties
│ └── test/
│ ├── java/
│ │ └── com/company/{project_name}/
│ │ └── AppTest.java
│ └── resources/
├── docs/
├── pom.xml # Maven configuration
├── README.md
├── Dockerfile
└── .gitignore
Key Variables:
groupId: str # Maven group ID (e.g., com.company)
artifactId: str # Maven artifact ID
package: str # Java package name
java_version: str # JDK version (11, 17, 21)
spring_boot_version: str # If using Spring Boot
build_tool: str # maven or gradle
Post-Scaffolding:
cd {project_name}
mvn clean compile # Compile project
mvn test # Run tests
mvn spring-boot:run # If using Spring Boot
Best Templates:
Template Structure:
{project_name}/
├── src/
│ ├── index.ts
│ ├── types/
│ │ └── index.ts
│ ├── services/
│ ├── controllers/ # If REST API
│ └── utils/
├── tests/
│ ├── unit/
│ └── integration/
├── dist/ # Compiled JavaScript (output)
├── tsconfig.json # TypeScript config
├── jest.config.js # Jest testing
├── .eslintrc.json # ESLint
├── package.json
├── Dockerfile
├── README.md
└── .gitignore
Key Variables:
project_name: str
typescript_version: str # Exact version or latest
jest_enabled: bool # Testing framework
eslint_enabled: bool # Linting
strict_mode: bool # tsconfig strict
target: str # Compilation target (ES2020, etc.)
module: str # Module system (ESNext, CommonJS)
Post-Scaffolding:
cd {project_name}
npm install
npm run build # Compile TypeScript
npm test # Run tests
npm start # Run compiled code
Best Templates:
Template Structure:
{project_name}/
├── cmd/
│ ├── cli/
│ │ └── main.go # Application entry point
│ └── server/ # If server application
│ └── main.go
├── internal/ # Private packages
│ ├── config/
│ ├── handler/
│ └── service/
├── pkg/ # Public packages
│ └── {package_name}/
├── api/ # API definitions
├── test/
├── docs/
├── Makefile # Build automation
├── go.mod # Module definition
├── go.sum # Checksums
├── Dockerfile
├── .gitignore
├── README.md
└── LICENSE
Key Variables:
project_name: str # Go module name (github.com/user/project)
author_name: str
go_version: str # Minimum Go version (1.19, 1.20, 1.21)
use_cobra: bool # CLI framework
use_gin: bool # Web framework (if server)
use_gorm: bool # ORM (if database needed)
Post-Scaffolding:
cd {project_name}
go mod download # Download dependencies
go build ./cmd/cli # Build application
go test ./... # Run tests
./cli --help # Test CLI
Best Templates:
Template Structure:
{project_name}/
├── helm/
│ └── {release_name}/
│ ├── Chart.yaml
│ ├── values.yaml
│ ├── values-dev.yaml
│ ├── values-prod.yaml
│ └── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── configmap.yaml
│ └── ingress.yaml
├── k8s/
│ ├── base/
│ ├── dev/
│ └── prod/
├── kustomization.yaml
├── docker-compose.yml # For local development
├── Dockerfile
├── .dockerignore
├── docs/
├── README.md
└── .gitignore
Key Variables:
project_name: str # Application name
image_registry: str # Docker registry
image_name: str # Docker image name
replicas_dev: int # Dev environment replicas
replicas_prod: int # Prod environment replicas
namespace: str # Kubernetes namespace
enable_ingress: bool
enable_monitoring: bool # Prometheus/monitoring
Post-Scaffolding:
cd {project_name}
docker build -t {image}:latest .
helm lint helm/{release}
helm template helm/{release} -f values-dev.yaml
kubectl apply -f k8s/dev/ # Deploy to dev
Best Templates:
Template Structure:
{project_name}/
├── main.tf # Main configuration
├── variables.tf # Input variables
├── outputs.tf # Output values
├── terraform.tfvars # Variable values
├── locals.tf # Local values
├── vpc.tf # VPC configuration
├── security.tf # Security groups
├── iam.tf # IAM roles/policies
├── modules/
│ ├── vpc/
│ ├── compute/
│ └── database/
├── environments/
│ ├── dev/
│ │ └── terraform.tfvars
│ ├── staging/
│ └── prod/
├── docs/
├── .gitignore
├── README.md
├── versions.tf # Terraform version constraints
└── backend.tf # State backend config
Key Variables:
project_name: str # Project identifier
aws_region: str # AWS region
environment: str # dev, staging, prod
terraform_version: str # Minimum version
Post-Scaffolding:
cd environments/dev
terraform init # Initialize backend
terraform plan # Preview changes
terraform apply # Apply configuration
terraform output # View outputs
Python:
Node.js:
Java:
Go:
For: Single service, simple build and push
# harness/build-pipeline.yaml
pipeline:
name: Build and Push
identifier: build_push
stages:
- stage:
name: Build Docker
type: CI
spec:
codebase:
repoName: {project_name}
branch: main
build:
type: Docker
spec:
dockerfile: Dockerfile
registryConnector: <+input.docker_connector>
imageName: <+input.image_name>
imageTag: <+codebase.commitSha>
For: Multi-stage pipeline with testing
pipeline:
name: Build Test Deploy
identifier: build_test_deploy
stages:
- stage:
name: Build
type: CI
spec:
build:
type: Docker
spec:
dockerfile: Dockerfile
- stage:
name: Test
type: CI
depends_on:
- Build
spec:
steps:
- step:
type: Run
spec:
image: <+artifact.image>
script: npm test
- stage:
name: Deploy Dev
type: Deployment
depends_on:
- Test
spec:
service:
serviceRef: <+input.service>
environment:
environmentRef: dev
For: Dev → Staging → Production with approvals
stages:
- stage:
name: Deploy Dev
type: Deployment
spec:
environment: dev
infrastructure: dev-k8s-cluster
- stage:
name: Deploy Staging
type: Deployment
depends_on:
- Deploy Dev
spec:
environment: staging
infrastructure: staging-k8s-cluster
- stage:
name: Approval for Production
type: Approval
depends_on:
- Deploy Staging
spec:
approvers:
- <+input.approver_group>
- stage:
name: Deploy Production
type: Deployment
depends_on:
- Approval for Production
spec:
environment: production
infrastructure: prod-k8s-cluster
For: Managing manifests separately from source code
stages:
- stage:
name: Build
type: CI
spec:
build:
type: Docker
- stage:
name: Update Manifests
type: CI
spec:
steps:
- step:
type: Run
spec:
script: |
git clone <+input.manifest_repo>
sed -i "s/IMAGE_TAG/<+artifact.imageTag>/g" k8s/deployment.yaml
git commit && git push
- stage:
name: Deploy via GitOps
type: Deployment
spec:
gitOpsEnabled: true
service:
serviceRef: <+input.service>
environment:
environmentRef: <+input.environment>
Frameworks:
Setup:
pip install pytest pytest-cov pytest-mock
Test Structure:
tests/
├── conftest.py # Shared fixtures
├── unit/
│ ├── test_module.py
│ └── test_service.py
├── integration/
│ └── test_api.py
└── fixtures/
└── sample_data.py
Coverage Target: 80%+
Frameworks:
Setup:
npm install --save-dev jest @testing-library/react
Test Structure:
tests/
├── unit/
│ ├── utils.test.js
│ └── helpers.test.js
├── integration/
│ └── api.test.js
└── e2e/
└── user-flow.test.js
Coverage Target: 80%+
Frameworks:
Setup:
<dependency>
<groupId>junit</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
Test Structure:
src/test/java/
└── com/company/project/
├── ServiceTest.java
├── ControllerTest.java
└── IntegrationTest.java
Coverage Target: 80%+
Testing Style:
Setup:
go get github.com/stretchr/testify
Test Structure:
internal/
├── service/
│ ├── service.go
│ └── service_test.go
└── handler/
├── handler.go
└── handler_test.go
Coverage Target: 80%+
# Git setup
git init
git add .
git commit -m "Initial commit from template"
# Dependency verification
{build-tool} list # List dependencies
# Test verification
{build-tool} test # Run test suite
# Build verification
{build-tool} build # Build project
# Docker verification (if applicable)
docker build -t {image}:test .
docker run {image}:test --version
ESSENTIAL:
- [ ] Project initialized and builds
- [ ] Dependencies installed
- [ ] Tests run and pass
- [ ] Documentation exists
- [ ] .gitignore configured
- [ ] Initial commit created
HARNESS INTEGRATION:
- [ ] Harness service created
- [ ] Pipeline template ready
- [ ] Environment configured
- [ ] Deployment target defined
QUALITY GATES:
- [ ] Linting passes
- [ ] Tests pass
- [ ] Code coverage >= 80%
- [ ] Documentation complete
- [ ] Security scan passes
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.