diff --git a/docs/README.md b/docs/README.md
index 2160a06eb..fe111397d 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -15,6 +15,7 @@ Welcome to the Agent Package Manager documentation. Choose your path:
 - **[CLI Reference](cli-reference.md)** - Complete command documentation
 - **[Examples & Use Cases](examples.md)** - Real-world patterns
 - **[Integration Guide](integrations.md)** - VSCode, AI runtimes, tools
+- **[Template Ecosystem](templates.md)** - Community templates via npm
 
 ## 🔧 **Advanced**
 - **[Runtime Integration](runtime-integration.md)** - Codex and LLM setup
diff --git a/docs/templates.md b/docs/templates.md
new file mode 100644
index 000000000..66a7ac38e
--- /dev/null
+++ b/docs/templates.md
@@ -0,0 +1,279 @@
+# APM Template Ecosystem
+
+This document describes the community-driven template ecosystem for APM, following npm's initializer pattern (`npm init <initializer>`).
+
+## Overview
+
+APM templates are distributed as npm packages named `create-apm-<template-name>`. This allows:
+
+- **Community ownership** - Anyone can publish templates
+- **Standard tooling** - Uses npm/npx (no new tools)
+- **Versioning** - Templates evolve independently via semver
+- **Discoverability** - Standard npm search works
+
+## Using Templates
+
+### Basic Usage
+
+```bash
+# Run a template
+apm init <template-name> [project-name]
+
+# Examples:
+apm init hello-world my-app      # → npx create-apm-hello-world my-app
+apm init express-api my-api      # → npx create-apm-express-api my-api
+apm init compliance              # → npx create-apm-compliance (current dir)
+```
+
+### How It Works
+
+When you run `apm init <template>`, APM delegates to npx:
+
+```
+apm init hello-world my-app
+        ↓
+npx create-apm-hello-world my-app
+```
+
+This follows npm's established pattern where `npm init <name>` runs `npx create-<name>`.
+
+### Without Template (Default)
+
+Running `apm init` without a template name creates a minimal `apm.yml`:
+
+```bash
+apm init                    # Interactive mode
+apm init --yes              # Use defaults
+apm init my-project --yes   # Create directory with defaults
+```
+
+## Creating Templates
+
+### Package Naming Convention
+
+Templates must be named `create-apm-<template-name>`:
+
+| Template Name | npm Package Name |
+|---------------|------------------|
+| `hello-world` | `create-apm-hello-world` |
+| `express-api` | `create-apm-express-api` |
+| `compliance`  | `create-apm-compliance` |
+
+### Package Structure
+
+```
+create-apm-hello-world/
+├── package.json          # npm package manifest
+├── bin/
+│   └── index.js          # CLI entry point (executable)
+├── templates/
+│   ├── apm.yml           # APM configuration template
+│   ├── hello-world.prompt.md
+│   ├── README.md
+│   └── .apm/
+│       ├── instructions/
+│       │   └── coding-standards.instructions.md
+│       └── chatmodes/
+│           └── developer.chatmode.md
+└── README.md             # Template documentation
+```
+
+### Required Files
+
+#### `package.json`
+
+```json
+{
+  "name": "create-apm-hello-world",
+  "version": "1.0.0",
+  "description": "APM template for getting started",
+  "bin": {
+    "create-apm-hello-world": "./bin/index.js"
+  },
+  "files": ["bin", "templates"],
+  "keywords": ["create-apm", "apm", "template"],
+  "license": "MIT"
+}
+```
+
+#### `bin/index.js`
+
+```javascript
+#!/usr/bin/env node
+
+const fs = require('fs');
+const path = require('path');
+
+const args = process.argv.slice(2);
+const projectName = args[0] || 'my-apm-project';
+const targetDir = path.resolve(process.cwd(), projectName);
+
+// Create project directory
+if (!fs.existsSync(targetDir)) {
+  fs.mkdirSync(targetDir, { recursive: true });
+}
+
+// Copy template files
+const templatesDir = path.join(__dirname, '..', 'templates');
+copyDir(templatesDir, targetDir);
+
+// Substitute variables in apm.yml
+const apmYmlPath = path.join(targetDir, 'apm.yml');
+let apmYml = fs.readFileSync(apmYmlPath, 'utf8');
+apmYml = apmYml.replace(/{{project_name}}/g, projectName);
+fs.writeFileSync(apmYmlPath, apmYml);
+
+console.log(`\n✨ Created APM project: ${projectName}\n`);
+console.log('Next steps:');
+console.log(`  cd ${projectName}`);
+console.log('  apm runtime setup copilot');
+console.log('  apm compile');
+console.log('  apm run start');
+
+function copyDir(src, dest) {
+  const entries = fs.readdirSync(src, { withFileTypes: true });
+  for (const entry of entries) {
+    const srcPath = path.join(src, entry.name);
+    const destPath = path.join(dest, entry.name);
+    if (entry.isDirectory()) {
+      fs.mkdirSync(destPath, { recursive: true });
+      copyDir(srcPath, destPath);
+    } else {
+      fs.copyFileSync(srcPath, destPath);
+    }
+  }
+}
+```
+
+### Template Variables
+
+Templates can use variable placeholders that are substituted during project creation:
+
+| Variable | Description | Example Value |
+|----------|-------------|---------------|
+| `{{project_name}}` | Project directory name | `my-app` |
+| `{{author}}` | Auto-detected from git config | `John Doe` |
+| `{{year}}` | Current year | Current year (e.g., 2025) |
+
+### Template `apm.yml` Example
+
+```yaml
+name: {{project_name}}
+version: 1.0.0
+description: APM project created from hello-world template
+author: {{author}}
+
+dependencies:
+  apm: []
+  mcp: []
+
+scripts:
+  start: "codex hello-world.prompt.md"
+```
+
+## Publishing Templates
+
+### To npm
+
+```bash
+cd create-apm-hello-world
+npm publish
+```
+
+### Testing Locally
+
+```bash
+# Link for local testing
+cd create-apm-hello-world
+npm link
+
+# Use the template
+apm init hello-world test-project
+```
+
+## Template Best Practices
+
+### DO
+
+- ✅ Include a helpful README.md
+- ✅ Provide working example prompts
+- ✅ Use semantic versioning
+- ✅ Include clear next steps after creation
+- ✅ Test the template before publishing
+
+### DON'T
+
+- ❌ Include node_modules in the package
+- ❌ Hardcode absolute paths
+- ❌ Include sensitive information
+- ❌ Depend on APM CLI internals
+
+## Available Templates
+
+### Official Templates
+
+| Template | Description | Install |
+|----------|-------------|---------|
+| `hello-world` | Basic getting started template | `apm init hello-world` |
+
+### Community Templates
+
+Community templates are discovered via npm search:
+
+```bash
+npm search create-apm
+```
+
+## CLI Integration
+
+The `apm init` command handles template delegation:
+
+```python
+# Simplified CLI logic
+def init(initializer, project_name, yes):
+    if initializer:
+        # Delegate to npx for community templates
+        cmd = ['npx', f'create-apm-{initializer}']
+        if project_name:
+            cmd.append(project_name)
+        subprocess.run(cmd)
+    else:
+        # Minimal init (default behavior)
+        _create_minimal_apm_yml()
+```
+
+This design ensures:
+- Templates are decoupled from APM CLI releases
+- Community can innovate independently
+- APM CLI stays minimal and focused
+
+## Future Considerations
+
+### Template Discovery Command
+
+A future `apm templates` command could search npm for `create-apm-*` packages:
+
+```bash
+apm templates              # List popular templates
+apm templates search api   # Search for API templates
+```
+
+### Template Metadata
+
+Templates could include metadata for better discoverability:
+
+```json
+{
+  "apm-template": {
+    "category": "backend",
+    "tags": ["express", "api", "rest"],
+    "minApmVersion": "0.5.0"
+  }
+}
+```
+
+## Related Documentation
+
+- [Getting Started](getting-started.md) - Basic APM setup
+- [CLI Reference](cli-reference.md) - Full command documentation
+- [Examples](examples.md) - Real-world usage patterns
diff --git a/templates/create-apm-hello-world/README.md b/templates/create-apm-hello-world/README.md
new file mode 100644
index 000000000..462b2e6d5
--- /dev/null
+++ b/templates/create-apm-hello-world/README.md
@@ -0,0 +1,44 @@
+# create-apm-hello-world
+
+APM template for getting started with AI-Native Development.
+
+## Usage
+
+### Via APM CLI (recommended)
+
+```bash
+apm init hello-world my-project
+```
+
+### Via npx
+
+```bash
+npx create-apm-hello-world my-project
+```
+
+## What's Included
+
+This template creates a minimal APM project with:
+
+- **`apm.yml`** - Project configuration (like package.json for AI-Native projects)
+- **`hello-world.prompt.md`** - Example executable prompt
+- **`.apm/instructions/`** - AI instructions directory
+- **`.apm/chatmodes/`** - AI personas directory
+- **`README.md`** - Project documentation
+
+## After Creation
+
+```bash
+cd my-project
+apm runtime setup copilot   # Install coding agent
+apm compile                  # Generate AGENTS.md
+apm run start               # Run hello world prompt
+```
+
+## Creating Your Own Templates
+
+See the [APM Template Ecosystem documentation](https://github.com/danielmeppiel/apm/blob/main/docs/templates.md) for how to create and publish your own templates.
+
+## License
+
+MIT
diff --git a/templates/create-apm-hello-world/bin/index.js b/templates/create-apm-hello-world/bin/index.js
new file mode 100644
index 000000000..a6d79b170
--- /dev/null
+++ b/templates/create-apm-hello-world/bin/index.js
@@ -0,0 +1,124 @@
+#!/usr/bin/env node
+
+/**
+ * create-apm-hello-world
+ * 
+ * APM template for getting started with AI-Native Development.
+ * This template creates a minimal APM project with example prompts
+ * and instructions to help you get started quickly.
+ * 
+ * Usage:
+ *   npx create-apm-hello-world my-project
+ *   apm init hello-world my-project
+ */
+
+const fs = require('fs');
+const path = require('path');
+
+// Parse command line arguments
+const args = process.argv.slice(2);
+const projectName = args[0] || 'my-apm-project';
+const targetDir = path.resolve(process.cwd(), projectName);
+
+// Colors for terminal output
+const colors = {
+  reset: '\x1b[0m',
+  bright: '\x1b[1m',
+  green: '\x1b[32m',
+  cyan: '\x1b[36m',
+  yellow: '\x1b[33m',
+};
+
+console.log(`\n${colors.cyan}${colors.bright}Creating APM project: ${projectName}${colors.reset}\n`);
+
+// Check if directory already exists
+if (fs.existsSync(targetDir)) {
+  const files = fs.readdirSync(targetDir);
+  if (files.length > 0) {
+    console.error(`${colors.yellow}Warning: Directory "${projectName}" is not empty${colors.reset}`);
+    console.error('Please choose an empty directory or a new project name.\n');
+    process.exit(1);
+  }
+}
+
+// Create project directory
+fs.mkdirSync(targetDir, { recursive: true });
+
+// Copy template files
+const templatesDir = path.join(__dirname, '..', 'templates');
+copyDir(templatesDir, targetDir);
+
+// Get author from git config (best effort)
+let author = 'Developer';
+try {
+  const { execSync } = require('child_process');
+  author = execSync('git config user.name', { encoding: 'utf8' }).trim() || author;
+} catch (e) {
+  // Git not available or not configured, use default
+}
+
+// Substitute variables in apm.yml
+const apmYmlPath = path.join(targetDir, 'apm.yml');
+let apmYml = fs.readFileSync(apmYmlPath, 'utf8');
+apmYml = apmYml
+  .replace(/{{project_name}}/g, projectName)
+  .replace(/{{author}}/g, author)
+  .replace(/{{year}}/g, new Date().getFullYear().toString());
+fs.writeFileSync(apmYmlPath, apmYml);
+
+// Substitute variables in README.md
+const readmePath = path.join(targetDir, 'README.md');
+let readme = fs.readFileSync(readmePath, 'utf8');
+readme = readme
+  .replace(/{{project_name}}/g, projectName)
+  .replace(/{{author}}/g, author)
+  .replace(/{{year}}/g, new Date().getFullYear().toString());
+fs.writeFileSync(readmePath, readme);
+
+// Print success message
+console.log(`${colors.green}✨ Successfully created APM project!${colors.reset}\n`);
+
+// Determine if we need to cd into the directory
+const needsCd = targetDir !== process.cwd();
+
+console.log(`${colors.bright}Next steps:${colors.reset}`);
+if (needsCd) {
+  console.log(`  ${colors.cyan}cd ${projectName}${colors.reset}`);
+}
+console.log(`  ${colors.cyan}apm runtime setup copilot${colors.reset}   # Install coding agent`);
+console.log(`  ${colors.cyan}apm compile${colors.reset}                 # Generate AGENTS.md`);
+console.log(`  ${colors.cyan}apm run start${colors.reset}               # Run hello world prompt`);
+console.log();
+
+console.log(`${colors.bright}Project structure:${colors.reset}`);
+console.log(`  ${projectName}/`);
+console.log(`  ├── apm.yml                         # Project configuration`);
+console.log(`  ├── hello-world.prompt.md           # Example prompt`);
+console.log(`  ├── README.md                       # Project documentation`);
+console.log(`  └── .apm/`);
+console.log(`      ├── instructions/               # AI instructions`);
+console.log(`      └── chatmodes/                  # AI personas`);
+console.log();
+
+console.log(`${colors.bright}Learn more:${colors.reset}`);
+console.log(`  https://github.com/danielmeppiel/apm`);
+console.log();
+
+/**
+ * Recursively copy a directory
+ */
+function copyDir(src, dest) {
+  const entries = fs.readdirSync(src, { withFileTypes: true });
+  
+  for (const entry of entries) {
+    const srcPath = path.join(src, entry.name);
+    const destPath = path.join(dest, entry.name);
+    
+    if (entry.isDirectory()) {
+      fs.mkdirSync(destPath, { recursive: true });
+      copyDir(srcPath, destPath);
+    } else {
+      fs.copyFileSync(srcPath, destPath);
+    }
+  }
+}
diff --git a/templates/create-apm-hello-world/package.json b/templates/create-apm-hello-world/package.json
new file mode 100644
index 000000000..caaba36c5
--- /dev/null
+++ b/templates/create-apm-hello-world/package.json
@@ -0,0 +1,33 @@
+{
+  "name": "create-apm-hello-world",
+  "version": "1.0.0",
+  "description": "APM template for getting started with AI-Native Development",
+  "keywords": [
+    "create-apm",
+    "apm",
+    "template",
+    "ai-native",
+    "agents",
+    "copilot"
+  ],
+  "author": "APM Community",
+  "license": "MIT",
+  "bin": {
+    "create-apm-hello-world": "./bin/index.js"
+  },
+  "files": [
+    "bin",
+    "templates"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/danielmeppiel/create-apm-hello-world"
+  },
+  "bugs": {
+    "url": "https://github.com/danielmeppiel/create-apm-hello-world/issues"
+  },
+  "homepage": "https://github.com/danielmeppiel/apm#template-ecosystem",
+  "engines": {
+    "node": ">=16"
+  }
+}
diff --git a/templates/create-apm-hello-world/templates/.apm/chatmodes/developer.chatmode.md b/templates/create-apm-hello-world/templates/.apm/chatmodes/developer.chatmode.md
new file mode 100644
index 000000000..b5670afb6
--- /dev/null
+++ b/templates/create-apm-hello-world/templates/.apm/chatmodes/developer.chatmode.md
@@ -0,0 +1,27 @@
+---
+description: Helpful developer assistant persona
+---
+
+# Developer Assistant
+
+You are a helpful developer assistant for this project.
+
+## Personality
+
+- Friendly and supportive
+- Patient when explaining concepts
+- Proactive in suggesting improvements
+
+## Expertise
+
+- Understanding project structure and conventions
+- Writing clean, maintainable code
+- Explaining technical concepts clearly
+- Suggesting best practices and improvements
+
+## Guidelines
+
+- Always consider the project's existing patterns
+- Suggest incremental improvements rather than rewrites
+- Explain the reasoning behind suggestions
+- Ask clarifying questions when requirements are unclear
diff --git a/templates/create-apm-hello-world/templates/.apm/instructions/coding-standards.instructions.md b/templates/create-apm-hello-world/templates/.apm/instructions/coding-standards.instructions.md
new file mode 100644
index 000000000..373e4cc64
--- /dev/null
+++ b/templates/create-apm-hello-world/templates/.apm/instructions/coding-standards.instructions.md
@@ -0,0 +1,28 @@
+---
+description: General coding standards for the project
+applyTo: "**/*.{js,ts,py,go,java}"
+---
+
+# Coding Standards
+
+Follow these coding standards for all code in this project:
+
+## General Principles
+
+- Write clean, readable code with meaningful names
+- Keep functions small and focused (single responsibility)
+- Add comments for complex logic, not obvious code
+- Handle errors gracefully with meaningful messages
+
+## Code Style
+
+- Use consistent indentation (project-specific)
+- Keep line length reasonable (80-120 characters)
+- Group related code together
+- Use blank lines to separate logical sections
+
+## Documentation
+
+- Document public APIs and interfaces
+- Include usage examples for complex functions
+- Keep documentation up-to-date with code changes
diff --git a/templates/create-apm-hello-world/templates/README.md b/templates/create-apm-hello-world/templates/README.md
new file mode 100644
index 000000000..87d388583
--- /dev/null
+++ b/templates/create-apm-hello-world/templates/README.md
@@ -0,0 +1,47 @@
+# {{project_name}}
+
+An AI-Native project powered by [APM](https://github.com/danielmeppiel/apm).
+
+## Quick Start
+
+```bash
+# Install a coding agent runtime
+apm runtime setup copilot
+
+# Compile AI context into AGENTS.md
+apm compile
+
+# Run the hello world prompt
+apm run start --param name="YourName"
+```
+
+## Project Structure
+
+```
+{{project_name}}/
+├── apm.yml                 # Project configuration
+├── hello-world.prompt.md   # Example prompt
+├── AGENTS.md               # Generated AI context (after compile)
+└── .apm/
+    ├── instructions/       # AI instructions
+    └── chatmodes/          # AI personas
+```
+
+## Adding Dependencies
+
+Install APM packages from the community:
+
+```bash
+apm install danielmeppiel/design-guidelines
+apm install danielmeppiel/compliance-rules
+```
+
+## Learn More
+
+- [APM Documentation](https://github.com/danielmeppiel/apm)
+- [Getting Started Guide](https://github.com/danielmeppiel/apm/blob/main/docs/getting-started.md)
+- [Creating Prompts](https://github.com/danielmeppiel/apm/blob/main/docs/prompts.md)
+
+## License
+
+MIT © {{author}} {{year}}
diff --git a/templates/create-apm-hello-world/templates/apm.yml b/templates/create-apm-hello-world/templates/apm.yml
new file mode 100644
index 000000000..1b0cc48c6
--- /dev/null
+++ b/templates/create-apm-hello-world/templates/apm.yml
@@ -0,0 +1,11 @@
+name: {{project_name}}
+version: 1.0.0
+description: APM project created from hello-world template
+author: {{author}}
+
+dependencies:
+  apm: []
+  mcp: []
+
+scripts:
+  start: "codex hello-world.prompt.md"
diff --git a/templates/create-apm-hello-world/templates/hello-world.prompt.md b/templates/create-apm-hello-world/templates/hello-world.prompt.md
new file mode 100644
index 000000000..de642a7a2
--- /dev/null
+++ b/templates/create-apm-hello-world/templates/hello-world.prompt.md
@@ -0,0 +1,21 @@
+---
+description: A friendly greeting prompt to test your APM setup
+input:
+  - name
+---
+
+# Hello World
+
+Greet the user by name and explain what APM (Agent Package Manager) is.
+
+The user's name is: ${input:name}
+
+## Instructions
+
+1. Greet the user warmly using their name
+2. Explain that APM is "npm for AI agents" - a package manager for AI-Native Development
+3. Mention the key features:
+   - Reusable prompts and instructions
+   - Dependency management for AI context
+   - Works with GitHub Copilot, Cursor, Claude, and other AI coding assistants
+4. Wish them success on their AI-Native Development journey
diff --git a/uv.lock b/uv.lock
index 7fd8c75f8..9eb1a90e9 100644
--- a/uv.lock
+++ b/uv.lock
@@ -166,7 +166,7 @@ wheels = [
 
 [[package]]
 name = "apm-cli"
-version = "0.5.4"
+version = "0.5.5"
 source = { editable = "." }
 dependencies = [
     { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
