From security-compliance
Enforces 5-layer security for MCP servers and multi-agent pipelines: input validation, prompt injection prevention, SQL/NoSQL validation, user context propagation, and RBAC/ABAC authorization.
npx claudepluginhub jpoutrin/product-forge --plugin security-complianceThis skill uses the workspace's default tool permissions.
This skill enforces security best practices for MCP servers and multi-agent pipelines.
Audits MCP tool handlers and schemas for vulnerabilities like shell injection, arbitrary file access, hardcoded secrets, and unconstrained inputs. Use when defining MCP servers or Claude Code extensions with FS/shell/network access.
Audits and implements WebMCP security: permission model, honest descriptions, data minimization, input validation, fingerprinting prevention, fraud mitigations. Use for tool implementations.
Governs AI agent MCP tool calls with Cedar policies for access control, shadow-to-enforce rollout, and Ed25519 signed receipt verification.
Share bugs, ideas, or general feedback.
This skill enforces security best practices for MCP servers and multi-agent pipelines.
# Always validate and sanitize inputs
def sanitize_input(user_input: str) -> str:
# Remove potential injection patterns
# Escape special characters
# Limit length
pass
# Never directly concatenate user input into prompts
# ❌ Bad
prompt = f"Process this: {user_input}"
# ✅ Good
prompt = sanitize_input(user_input)
validated_prompt = validate_against_schema(prompt)
@dataclass
class UserContext:
user_id: str
roles: list[str]
permissions: list[str]
tenant_id: str
# Pass context through all pipeline stages
async def process_request(context: UserContext, request: Request):
# Validate permissions at each step
if not has_permission(context, "read:data"):
raise AuthorizationError()
ROLE_PERMISSIONS = {
"admin": ["read", "write", "delete", "admin"],
"editor": ["read", "write"],
"viewer": ["read"],
}
def can_access(user: User, resource: Resource) -> bool:
return (
user.department == resource.department
and user.clearance >= resource.sensitivity
)