Install
$ agentstack add skill-armanzeroeight-fastagent-plugins-template-validator ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Template Validator
Quick Start
Validate CloudFormation templates for syntax errors, security issues, and adherence to best practices before deployment.
Instructions
Step 1: Validate template syntax
# Basic validation
aws cloudformation validate-template \
--template-body file://template.yaml
# Validation with parameters
aws cloudformation validate-template \
--template-body file://template.yaml \
--parameters ParameterKey=Param1,ParameterValue=Value1
Check for:
- Valid YAML/JSON syntax
- Required template sections
- Valid resource types
- Correct intrinsic function usage
- Parameter references
Step 2: Use cfn-lint for comprehensive checks
# Install cfn-lint
pip install cfn-lint
# Validate template
cfn-lint template.yaml
# Validate with specific rules
cfn-lint template.yaml --ignore-checks W
# Output as JSON
cfn-lint template.yaml --format json
cfn-lint checks:
- Template structure
- Resource properties
- Best practices
- Security issues
- Regional availability
Step 3: Security validation
Check IAM policies:
# Review for overly permissive policies
Resources:
Role:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: AppPolicy
PolicyDocument:
Statement:
# Avoid wildcards
- Effect: Allow
Action: s3:* # Too permissive!
Resource: '*' # Too broad!
Better approach:
Policies:
- PolicyName: AppPolicy
PolicyDocument:
Statement:
- Effect: Allow
Action:
- s3:GetObject
- s3:PutObject
Resource: !Sub '${MyBucket.Arn}/*'
Check security groups:
# Avoid open access
Resources:
SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
SecurityGroupIngress:
# Don't allow 0.0.0.0/0 for SSH
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0 # Security risk!
Better approach:
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 10.0.0.0/8 # Restrict to internal network
Step 4: Check resource dependencies
Verify DependsOn usage:
Resources:
# Explicit dependency needed
Instance:
Type: AWS::EC2::Instance
DependsOn: InternetGatewayAttachment
Properties:
# ...
# Implicit dependency via Ref
SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref SecurityGroup # Implicit dependency
Check for circular dependencies:
- Review all DependsOn relationships
- Check Ref and GetAtt usage
- Verify no circular references
Step 5: Validate best practices
Use specific resource names:
# Good
Resources:
WebServerSecurityGroup:
Type: AWS::EC2::SecurityGroup
# Avoid generic names
Resources:
SecurityGroup1:
Type: AWS::EC2::SecurityGroup
Add descriptions:
AWSTemplateFormatVersion: '2010-09-09'
Description: Web application infrastructure with ALB and Auto Scaling
Parameters:
InstanceType:
Type: String
Description: EC2 instance type for web servers
Use tags:
Resources:
Instance:
Type: AWS::EC2::Instance
Properties:
Tags:
- Key: Name
Value: !Sub '${AWS::StackName}-WebServer'
- Key: Environment
Value: !Ref Environment
- Key: ManagedBy
Value: CloudFormation
Common Validation Checks
Syntax Validation
Valid YAML structure:
AWSTemplateFormatVersion: '2010-09-09'
Description: Template description
Parameters:
# Parameters section
Resources:
# Resources section (required)
Outputs:
# Outputs section
Intrinsic functions:
# Correct
Value: !Ref MyResource
Value: !GetAtt MyResource.Attribute
Value: !Sub '${MyResource}'
# Incorrect
Value: Ref: MyResource # Wrong syntax
Value: !GetAtt MyResource # Missing attribute
Security Validation
IAM policies:
- No wildcards in actions unless necessary
- Specific resources instead of '*'
- Least privilege principle
- No hardcoded credentials
Security groups:
- No 0.0.0.0/0 for sensitive ports (22, 3389, 3306, 5432)
- Specific port ranges
- Documented ingress rules
Encryption:
- Enable encryption for S3 buckets
- Enable encryption for EBS volumes
- Enable encryption for RDS instances
- Use KMS keys for sensitive data
Resource Validation
Required properties:
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
# BucketName is optional but recommended
BucketName: !Sub '${AWS::StackName}-bucket'
Valid property values:
Resources:
Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t3.micro # Must be valid instance type
ImageId: ami-12345678 # Must be valid AMI ID
Validation Tools
AWS CLI
# Validate template
aws cloudformation validate-template \
--template-body file://template.yaml
# Create change set (validates before applying)
aws cloudformation create-change-set \
--stack-name my-stack \
--change-set-name my-changes \
--template-body file://template.yaml
# Describe change set
aws cloudformation describe-change-set \
--stack-name my-stack \
--change-set-name my-changes
cfn-lint
# Basic validation
cfn-lint template.yaml
# Ignore warnings
cfn-lint template.yaml --ignore-checks W
# Specific regions
cfn-lint template.yaml --regions us-east-1 us-west-2
# Custom rules
cfn-lint template.yaml --append-rules custom-rules/
cfn-nag
# Install cfn-nag
gem install cfn-nag
# Scan template
cfn_nag_scan --input-path template.yaml
# Scan with rules
cfn_nag_scan --input-path template.yaml --deny-list-path rules.txt
TaskCat
# Install taskcat
pip install taskcat
# Test template
taskcat test run
# Configuration in .taskcat.yml
project:
name: my-project
regions:
- us-east-1
- us-west-2
tests:
default:
template: template.yaml
parameters:
InstanceType: t3.micro
Validation Checklist
Template structure:
- [ ] Valid YAML/JSON syntax
- [ ] AWSTemplateFormatVersion present
- [ ] Description provided
- [ ] Resources section present
Parameters:
- [ ] Descriptive names
- [ ] Descriptions provided
- [ ] Validation constraints (AllowedValues, AllowedPattern)
- [ ] Appropriate defaults
- [ ] NoEcho for sensitive values
Resources:
- [ ] Descriptive logical IDs
- [ ] Required properties present
- [ ] Valid property values
- [ ] Appropriate DependsOn usage
- [ ] Tags applied
Security:
- [ ] IAM policies follow least privilege
- [ ] No hardcoded credentials
- [ ] Security groups restrict access
- [ ] Encryption enabled where appropriate
- [ ] No overly permissive policies
Outputs:
- [ ] Descriptive names
- [ ] Descriptions provided
- [ ] Appropriate exports
- [ ] Conditional outputs where needed
Best practices:
- [ ] Consistent naming convention
- [ ] Appropriate use of parameters
- [ ] Cross-stack references via exports
- [ ] Proper error handling
- [ ] Documentation in descriptions
Advanced
For detailed information, see:
- [Security Best Practices](reference/security-best-practices.md) - Comprehensive security validation guide
- [Validation Rules](reference/validation-rules.md) - Complete list of validation rules and checks
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: armanzeroeight
- Source: armanzeroeight/fastagent-plugins
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.