.agents/skills/fixdocs/SKILL.md
swissshepherdFix Terraform provider documentation issues by removing targets from the swissshepherd ignore list, validating findings against the schema, and correcting the documentation.
Trigger this skill when the user:
Optional:
aws_s3_bucket) or prefix (e.g., aws_s3_)resource, data_source, ephemeral, etc.)If no target is specified, pick the next one from ignore_targets in .ci/swissshepherd-weak.hcl.
make swissshepherd
This MUST output "All checks passed." before proceeding. If it doesn't, stop and tell the user the baseline is dirty.
.ci/swissshepherd-weak.hclignore_targets list (within a check block)swissshepherd --config .ci/swissshepherd-weak.hcl --target <name> --type <type>
If "All checks passed" — the target was already clean. Commit the config removal and move to the next target.
For each finding, determine if it's valid by checking the schema source of truth:
internal/service/<service>/<resource>.go or *_data_source.go) to confirm the attribute/block exists in the schema.If a finding appears to be a swissshepherd bug (schema says one thing, ss reports another), note it and skip — do NOT fix the doc incorrectly.
BOTH WARNINGS AND ERRORS should be fixed!!
Open the doc file (path is in the ss output) and apply fixes:
| Finding | Fix |
|---|---|
| "block X is not documented" | Add a ### \block_name` Block` section with its attributes listed |
| "attribute X should be documented in Attribute Reference" | Add to Attribute Reference section |
| "attribute X should not appear in Argument Reference" | Move from Arguments to Attributes |
| "documented attribute X does not exist in schema" | Remove from docs (it's phantom) |
| "missing (Required) or (Optional) label" | Add the correct label based on schema |
| "heading ... should be ..." | Rename to the suggested heading |
| "byline does not match expected texts" | Replace with a standard byline |
| "reference-style link definition" | Convert [ref]: url to inline [text](url) |
When adding or editing documentation:
* \name` - (Required) Description.or* `name` - (Optional) Description.`* \name` - Description.` (no Required/Optional label)### `block_name` BlockAuthoritative reference: docs/end-user-documentation.md. When this skill and that document disagree, the document wins.
swissshepherd --config .ci/swissshepherd-weak.hcl --target <name> --type <type>
Must output "All checks passed." If not, iterate on remaining findings.
make swissshepherd
Must output "All checks passed." to confirm no regressions.
Stage and commit:
git add .ci/swissshepherd-weak.hcl website/docs/
git commit -m "<resource_name>: Fix documentation per swissshepherd"
Use the resource name without the aws_ prefix in the commit message scope when it matches a single service. For multi-target batches, use the service name.
--config .ci/swissshepherd-weak.hcl — running without config produces 20,000+ findings.ignore_targets under check "schema_docs" AND check "import_section" (or others). Remove from all.ignore_contents_check unless the user explicitly asks — those are structural exceptions.### `y` Block nested contextually after the parent.User: "fix docs for aws_s3_bucket_lifecycle_configuration"
make swissshepherd passesaws_s3_bucket_lifecycle_configuration from ignore_targets in the schema_docs check blockswissshepherd --config .ci/swissshepherd-weak.hcl --target aws_s3_bucket_lifecycle_configuration --type resourceERROR [schema_docs] ... block "rule.filter" is not documentedfilter block exists under rule### `filter` Block section with its attributesmake swissshepherd — passes