create-agent-template — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited create-agent-template (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate Harness Agent Template files for AI-powered automation agents.
Agent templates are modular pipeline definitions that encapsulate AI-powered automation. Each template produces three files:
| File | Required | Purpose |
|---|---|---|
metadata.json | Yes | Template name, description, version |
pipeline.yaml | Yes | Pipeline definition (v1 syntax) |
wiki.MD | Recommended | User-facing documentation |
templates/<agent-name>/
metadata.json
pipeline.yaml
wiki.MD{
"name": "Agent Name",
"description": "Brief description of what this agent does (1-2 sentences)",
"version": "1.0.0"
}Rules:
name: Sentence Case (Code Review, not code-review)description: Under 200 characters, clear value propositionversion: Semantic versioning MAJOR.MINOR.PATCHversion: 1
pipeline:
clone:
depth: 1
ref:
name: <+inputs.branch>
type: branch
repo: <+inputs.repo>
connector: "<+inputs.gitConnector != null ? inputs.gitConnector.id : ''>"
stages:
- name: <stage-name>
steps:
- name: <step-name>
run:
container:
image: <registry>/<image>:<tag>
with:
param: value
env:
SECRET_VAR: <+inputs.secretInput>
platform:
os: linux
arch: arm64
inputs:
repo:
type: string
required: true
branch:
type: string
default: main
llmConnector:
type: connector
gitConnector:
type: connectorBranch clone:
clone:
depth: 1
ref:
name: <+inputs.branch>
type: branch
repo: <+inputs.repo>
connector: "<+inputs.gitConnector != null ? inputs.gitConnector.id : ''>"Pull request clone:
clone:
depth: 1000
ref:
type: pull-request
number: <+inputs.pullReq>
repo: <+inputs.repo>| Type | Usage | Example |
|---|---|---|
string | Text values | repo name, branch, file paths |
secret | Sensitive values | API keys, tokens |
connector | Harness connectors | Git connector, LLM connector |
inputs:
repo:
type: string
required: true
branch:
type: string
default: main
description: Branch to analyze
apiKey:
type: secret
default: account.my_secret
llmConnector:
type: connector
description: LLM provider connector
gitConnector:
type: connector
description: Git repository connectorContainer plugin step:
- name: my-step
run:
container:
image: registry/image:tag
with:
plugin_param: value
env:
API_KEY: <+inputs.apiKey>Shell script step:
- name: shell-step
run:
shell: bash
script: |-
echo "Running script"
git add -A
git diff --cached
env:
MY_VAR: value# Input references
<+inputs.variableName>
# Connector token
<+inputs.connectorName.token>
# Step outputs
<+pipeline.stages.STAGE.steps.STEP.output.outputVariables.VAR>
# Environment variables
<+env.HARNESS_ACCOUNT_ID>
<+env.HARNESS_ORG_ID>
<+env.HARNESS_PROJECT_ID>
# Alternative syntax for inputs in env blocks
${{inputs.repo}}# Agent Name
**Version:** 1.0.0
**Name:** Agent Name
## Overview
What this agent does and why it is useful.
---
## Key Capabilities
- **Capability 1**: Description
- **Capability 2**: Description
---
## How It Works
1. **Step 1**: Description
2. **Step 2**: Description
3. **Step 3**: Description
## Required Inputs
| Input | Type | Description | Default |
|-------|------|-------------|---------|
| `repo` | string | Repository identifier | -- |
| `branch` | string | Branch to analyze | main |
## Usage Example
\`\`\`yaml
inputs:
repo: "my-org/my-repo"
branch: "main"
\`\`\`
## Troubleshooting
### Common Issue 1
Solution description.For complete agent examples (Code Review, Security Scanner, Documentation Generator) and reusable patterns (SCM detection, coding agent, PR creation), consult references/agent-examples.md.
/create-agent-template
Create an agent template for code review that analyzes pull requests,
provides feedback, and posts review comments/create-agent-template
Generate a security scanner agent that finds vulnerabilities and
creates a report/create-agent-template
Create an agent that analyzes a codebase and generates documentation,
then opens a PR with the results/create-agent-template
Build an agent template that generates unit tests to improve code coverage| Error | Cause | Solution |
|---|---|---|
| Invalid metadata | Missing name, description, or version | Include all three required fields |
| Invalid version | Not semver format | Use MAJOR.MINOR.PATCH (e.g., 1.0.0) |
| Pipeline validation error | Invalid v1 YAML syntax | Verify pipeline structure follows v1 schema |
| Connector not found | Referenced connector does not exist | Create the connector before running the agent |
| Undefined input reference | <+inputs.x> used but x not defined in inputs | Add missing input definition |
required: true inputs have valuesDRONE_REPO_SCM environment variable is availablegit diff --cached is non-empty)PLUGIN_REPO format matches the SCM provider expectationsecho "KEY=value" >> $DRONE_OUTPUTecho "KEY=value" >> $HARNESS_OUTPUT_SECRET_FILE<+pipeline.stages.STAGE.steps.STEP.output.outputVariables.KEY>type: secret inputstype: connector for authentication rather than raw tokens$HARNESS_OUTPUT_SECRET_FILE, not $DRONE_OUTPUTdepth: 1000 for PR clones to ensure full diff historydepth: 1 for branch clones to minimize clone time~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.