Skip to content

feat(claude_skill): add CSKILL-087 placeholder description rule - #116

Open
kureen-cyber wants to merge 1 commit into
trustabl:mainfrom
kureen-cyber:feat/cskill-087-placeholder-description
Open

feat(claude_skill): add CSKILL-087 placeholder description rule#116
kureen-cyber wants to merge 1 commit into
trustabl:mainfrom
kureen-cyber:feat/cskill-087-placeholder-description

Conversation

@kureen-cyber

@kureen-cyber kureen-cyber commented Aug 24, 2026

Copy link
Copy Markdown

Summary

  • Adds CSKILL-087 (low): skill description: is a placeholder stub (TODO / TBD / FIXME / placeholder / no description / does stuff).
  • Complements CSKILL-070, which only flags an empty description. Claude Code still loads a stub into context and uses it as the model-invocation signal, so "TODO: describe this skill" is functionally the same as no description.
  • Reuses the existing skill_description_has_text predicate and the same needle list as CSDK-017. No schema_version bump.

Companion PRs (same branch name feat/cskill-087-placeholder-description):

Test plan

  • trustabl rules validate . on this pack
  • Engine TestPolicyRules_AllRulesCovered includes CSKILL-087 fire + silent
  • Fire: description: "TODO: describe this skill."
  • Silent: a real description with no placeholder needles

CSKILL-070 only flags an empty description. A stub like TODO still
gives Claude no model-invocation signal.
@jhumel-code

Copy link
Copy Markdown
Collaborator

Thanks @kureen-cyber, this is a clean rule. CSKILL-087 is the next free ID, the schema side is right (scope: skill with applies_to: claude_skill, and correctly no language: field for a markdown surface), skill_description_has_text already exists on main so no schema_version bump is needed, and low / 0.85 matches both the CSDK-017 tool-side analogue and CSKILL-070 next door. The CSKILL-070 gap you describe is real, and the explanation and fix name the concrete consequence and the concrete change.

Two non-blocking notes. That predicate is an unanchored, case-insensitive substring match, so todo and placeholder will also fire on honest descriptions like "Extracts TODO comments and files them as issues". CSDK-017 carries the same list, so I will not hold this to a different standard, but skill descriptions are longer trigger prose than tool descriptions, so the collision surface is wider. Tightening the needles or dropping confidence to 0.7 would both be welcome. Also worth knowing a stub description will co-fire CSKILL-085, so it reports twice at low.

This still needs a rulebook rationale doc before it ships; the description points at trustabl/trustabl-rulebook#109, and we can pair on that if the front-matter gate fights you. I have the engine half at trustabl/trustabl#192 and its fixture copy is byte identical to this pack, so I will land the two together, this one first.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants