Skip to content
Back to skills

Cocosentinel

ASecurity

CocoSentinel approval — records SHA-bound approval for a previously evaluated artifact. Invoked via $sentinel --approve [file]. Voids automatically if the artifact is modified after approval.

  • 724 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 5, 2026
ai-agents

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned June 5, 2026

npx -y skills add Snowflake-Labs/cocoplus --skill cocosentinel --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cocosentinel?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cocosentinel
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/snowflake-labs-cocosentinel/badge)](https://www.skillsdirectory.com/skills/snowflake-labs-cocosentinel)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sentinel-approve
description: CocoSentinel approval — records SHA-bound approval for a previously evaluated artifact. Invoked via $sentinel --approve [file]. Voids automatically if the artifact is modified after approval.
version: "1.0.0"
author: CocoPlus
tags:
  - cocosentinel
  - artifact-quality
  - approval
user-invocable: true
blocking: true
---

## Objective

You are recording a SHA-bound approval for an artifact that has been evaluated by CocoSentinel. Your task is to write a formal approval record to `.cocoplus/sentinel/approvals.jsonl`.

Before proceeding, verify that `.cocoplus/` exists in the current directory. If it does not, output: "CocoPlus is not initialized in this directory. Run `$pod init` to set up the CocoPlus project bundle and try again." Then stop.

## Step 1 — Identify Artifact

The developer invoked `$sentinel --approve [file]`. If no file was provided, ask: "Which file are you approving? Provide the file path."

Read the artifact file. If it does not exist, output: "File not found: <path>." Then stop.

## Step 2 — Load Evaluation Result

Compute SHA-256 of the artifact content. Look up `.cocoplus/sentinel/<sha>.json`.

If no evaluation result exists for this SHA, output: "No CocoSentinel evaluation found for this artifact at its current state. Run `$sentinel <file>` first." Then stop.

Read the evaluation result. Check the `outcome` field.

## Step 3 — Determine Approval Path

**If outcome is APPROVED:**
- No rationale required. Proceed to Step 4.

**If outcome is CONDITIONAL:**
- Ask: "This artifact has CONDITIONAL outcome with the following BLOCKING concerns:
  [list all CONCERN (BLOCKING) findings]

  Provide written rationale for accepting this artifact despite these concerns:
  > "
- Wait for developer input. The rationale must be non-empty and substantive (at least 20 words). If too short, ask to elaborate.

**If outcome is BLOCKED:**
- Output: "Artifact is BLOCKED — one or more FAIL verdicts exist. Address the FAIL findings and re-run `$sentinel <file>` before approving."
- Then stop.

## Step 4 — Write Approval Record

Append to `.cocoplus/sentinel/approvals.jsonl`:

```json
{
  "artifact_path": "<path>",
  "artifact_sha": "<sha256>",
  "approved_at": "<ISO8601 timestamp>",
  "outcome": "<APPROVED|CONDITIONAL>",
  "conditional_rationale": "<rationale or null>"
}
```

## Step 5 — Output Confirmation

Display:
```
CocoSentinel: approval recorded.
  Artifact: <path>
  SHA: <sha>
  Outcome: <APPROVED|CONDITIONAL>
  Approved at: <timestamp>

This approval is bound to SHA <sha>. If the artifact is modified, the approval will be automatically voided
and you will be notified at the next session start.
```

## Anti-Rationalization Table

| Shortcut / Temptation | Why It Fails |
|-----------------------|--------------|
| Approve a BLOCKED artifact | BLOCKED means FAIL — the approval gate exists to prevent bypassing critical quality findings |
| Accept empty rationale for CONDITIONAL | Empty rationale makes the approval unauditable — future reviewers cannot understand why the concern was accepted |
| Write approval without evaluating first | Approval without evaluation SHA creates a record that refers to no known quality assessment |

## Exit Criteria

- Approval record written to `approvals.jsonl` with correct SHA
- CONDITIONAL approvals include substantive written rationale
- BLOCKED artifacts are rejected — no approval written

Files in this skill

  • sentinel-approve.skill.md3.4 KB
  • sentinel-report.skill.md2.6 KB
  • sentinel.skill.md8.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…