BC cert-lifecycle-harness
A harness for guiding humans through the full lifecycle of an X.509/TLS certificate renewal, replacement, or migration in complex infrastructures (CDN / LB / K8s / self-hosted gateway / mTLS). The skill turns "generate a renewal script" into a rigorous assistant workflow: (1) split review into L3 / L2 / L1 layers so every reviewer has a bounded time budget; (2) treat the Agent as "safety officer + document engineer + trusted executor", not an autonomous SRE; (3) enforce a six-gate protocol before any write API is executed on behalf of the user, and never execute Delete; (4) classify asset discovery as a graph closure (domain ↔ certificate), with wildcard fan-out, cross-zone authorization boundaries, and shadow certificate provenance; (5) adapt to the upcoming CA/B Forum validity shrinkage timeline (398 → 200 → 100 → 47 days). Use this skill whenever the user's question is about renewing, migrating, auditing, or hardening TLS certificates across real production systems — especially when the risks "expire = outage" and "one wrong field = P0" apply. Not intended for one-off `openssl req` examples or pure PKI theory.
As a process C 59/100 · Has gaps — weak spots: result and completion, inputs and preconditions, progress reporting
How to improve
- Shorten the description to 1024 characters.
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 11
✓ No critical or high findings
Medium and low: 11
-
low Dangerous commands
cmd-privilegephases/runbook-templates/jks-rollover.sh.tpl.md:41Privilege escalation / world-writable permissions (documentation of a security skill)sudo cp "$KEYSTORE_PATH" "$BACKUP_DIR/keystore.jks.bak"
security skill -
low Dangerous commands
cmd-privilegephases/runbook-templates/jks-rollover.sh.tpl.md:65Privilege escalation / world-writable permissions (documentation of a security skill)sudo cp -a "$BACKUP_DIR/keystore.jks.bak" "$KEYSTORE_PATH"
security skill -
low Dangerous commands
cmd-privilegephases/runbook-templates/jks-rollover.sh.tpl.md:79Privilege escalation / world-writable permissions (documentation of a security skill)sudo cp -a "$BACKUP_DIR/keystore.jks.bak" "$KEYSTORE_PATH"
security skill -
low Dangerous commands
cmd-privilegephases/runbook-templates/nginx-reload.sh.tpl.md:32Privilege escalation / world-writable permissions (documentation of a security skill)sudo cp -a "$NGINX_SSL_DIR/$CERT_NAME".* "$BACKUP_DIR/"
security skill -
low Dangerous commands
cmd-privilegephases/runbook-templates/nginx-reload.sh.tpl.md:36Privilege escalation / world-writable permissions (documentation of a security skill)sudo cp "$NEW_CERT_SRC" "$NGINX_SSL_DIR/$CERT_NAME.fullchain.pem"
security skill -
low Dangerous commands
cmd-privilegephases/runbook-templates/nginx-reload.sh.tpl.md:37Privilege escalation / world-writable permissions (documentation of a security skill)sudo cp "$NEW_KEY_SRC" "$NGINX_SSL_DIR/$CERT_NAME.key"
security skill -
low Dangerous commands
cmd-privilegephases/runbook-templates/nginx-reload.sh.tpl.md:38Privilege escalation / world-writable permissions (documentation of a security skill)sudo chmod 0644 "$NGINX_SSL_DIR/$CERT_NAME.fullchain.pem"
security skill -
low Dangerous commands
cmd-privilegephases/runbook-templates/nginx-reload.sh.tpl.md:39Privilege escalation / world-writable permissions (documentation of a security skill)sudo chmod 0600 "$NGINX_SSL_DIR/$CERT_NAME.key"
security skill
A further 3 matches are quotations in this security skill's documentation and are not counted as findings.
Files scanned: 32. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
- error
description-longdescription is 1131 chars, limit 1024
Process rating: all ten parameters 59/100
- 0Result and completion. Does not say what the result is
- 0Inputs and preconditions. Does not say what the process needs to start
- 0Progress reporting. Says nothing while it works
- 50Failures and branches. 0 branches, has a failure section
- 60Tools and files. Uses tools (bash, web) that frontmatter does not declare
- 70Execution cost. Instruction body is 4658 tokens
- 100Steps. 56 steps
- 100When it triggers. States when to use and when not to
- 100Consistency. Name and required fields are in place
- 100Running it twice. Mutating operations check current state
- low 14 top-level sections: this looks like several domains in one skill
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +3Description length 1130: 120–800 characters recommended
- +3Output format is not stated: the model decides each time
- -274 emoji in the instructions: noise for the model
- +1No license
- +2Single-language instructions
- +5Description quotes 4 example trigger phrases
- +4Description says when NOT to use the skill
- +4Structure: 36 headings
- +3Step-by-step instructions: 56 items
- +4Has examples (13 code blocks)
- +4Reference files are cited in the instructions (9 of 9)
- +3All 1 scripts are documented
Quality base 70; lint remarks subtract, signals add up to 100. Result: 70.