fai-specification-generator — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited fai-specification-generator (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Create detailed specs with requirements, API contracts, and acceptance criteria.
# Technical Specification: [Feature Name]
## 1. Overview
**Author:** [name] | **Date:** [date] | **Status:** Draft
### Problem
[What problem does this solve?]
### Solution
[High-level technical approach]
## 2. API Contract
### POST /api/chat
**Request:**
\```json
{
"message": "string (required, 1-4000 chars)",
"model": "string (optional, default: gpt-4o-mini)",
"context_id": "string (optional, UUID)"
}
\```
**Response (200):**
\```json
{
"reply": "string",
"model": "string",
"tokens": { "prompt": 150, "completion": 300 },
"context_id": "UUID"
}
\```
**Errors:**
| Code | Reason |
|------|--------|
| 400 | Invalid input (validation failed) |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
## 3. Data Model
### conversations
| Column | Type | Constraints |
|--------|------|-------------|
| id | UUID | PK, auto-generated |
| user_id | UUID | FK → users, NOT NULL |
| title | VARCHAR(500) | |
| model | VARCHAR(50) | DEFAULT 'gpt-4o-mini' |
| created_at | TIMESTAMPTZ | DEFAULT NOW() |
## 4. Non-Functional Requirements
- Latency: P95 < 2000ms
- Availability: 99.9%
- Throughput: 100 concurrent users
- Security: Managed Identity, no API keys
## 5. Acceptance Criteria
- [ ] Chat endpoint returns grounded response within 2s
- [ ] Rate limiting returns 429 after 100 req/min
- [ ] Invalid input returns 400 with field-level errors
- [ ] Conversation persisted in Cosmos DBdef generate_spec(feature: str, stack: str) -> str:
return llm(f"""Write a technical specification for:
Feature: {feature}
Stack: {stack}
Include: API contract (request/response/errors), data model, NFRs, acceptance criteria.
Use markdown with code blocks for JSON schemas.""")| Issue | Cause | Fix |
|---|---|---|
| Spec too vague | Missing examples | Add concrete JSON request/response |
| API contract ambiguous | No error codes | Document all error scenarios |
| NFRs missing | Not considered | Add latency, throughput, availability targets |
| Spec becomes stale | No update process | Link spec to implementation in PR |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.