.agents/skills/create-rule/SKILL.md
Scaffold a new rule processor, implement the evaluation logic, and write tests.
npx skillsauth add carrot-foundation/methodology-rules Create Rule ProcessorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scaffold the rule using the built-in script:
pnpm create-rule <name> <scope> <description>
<name>: kebab-case rule name (e.g., vehicle-validation)<scope>: processor group (mass-id, credit-order, or mass-id-certificate)<description>: short description of what the rule validatesThis creates the standard file structure:
{rule-name}/
├── {rule-name}.processor.ts
├── {rule-name}.lambda.ts
├── {rule-name}.processor.spec.ts
├── {rule-name}.lambda.e2e.spec.ts
├── {rule-name}.test-cases.ts
├── {rule-name}.rule-subject.ts
├── index.ts
├── project.json
└── vitest.config.ts
Define the rule subject schema: In {rule-name}.rule-subject.ts, define a *RuleSubjectSchema using z.object() with the exact fields the rule needs. Export both the schema and the inferred type. Use validateRuleSubjectOrThrow as the standard validation entry point in the processor.
Implement the processor: In {rule-name}.processor.ts, implement the evaluateResult() method. The processor extends ParentDocumentRuleProcessor<RuleSubject>.
Write test cases: In {rule-name}.test-cases.ts, define shared test data using @faker-js/faker and zocker. Never use real data (no real company names, tax IDs, addresses, etc.).
Write unit tests: In {rule-name}.processor.spec.ts, test the core evaluation logic using the shared test cases.
Write e2e tests: In {rule-name}.lambda.e2e.spec.ts, test the Lambda handler end-to-end.
Apply to a methodology (if needed):
pnpm apply-methodology-rule <methodology> <rule> <scope>
Example: pnpm apply-methodology-rule carbon-organic vehicle-validation mass-id
Verify: Run pnpm lint:affected && pnpm ts:affected && pnpm test:affected to confirm everything passes.
databases
Create and modify Zod schemas for runtime validation with proper type inference.
testing
Write Vitest unit tests following project conventions with proper stubs and assertions.
tools
Autonomously implement a task following project conventions with iterative verification.
testing
Analyze a pull request diff and provide structured feedback on correctness, conventions, and quality.