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
  • 2 views
  • 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.