skill-validation-gf3
Skill Validation GF(3) - SLAVE (-1)
When & Why to Use This Skill
This Claude skill provides automated validation for agent skill repositories, specifically enforcing GF(3) conservation laws and structural integrity. It ensures that all skills within an ecosystem maintain role consistency (GAY/MASTER/SLAVE), deterministic metadata, and standardized documentation, which is essential for building stable and logically coherent multi-agent systems.
Use Cases
- Automated Repository Auditing: Systematically scan skill directories to verify the presence of required SKILL.md files and adherence to standardized folder structures.
- Role Consistency Verification: Enforce GF(3) triad conservation rules (GAY + MASTER + SLAVE = 0) to ensure logical balance within multi-agent frameworks.
- Deterministic Property Validation: Verify that skill attributes, such as Gay.jl color assignments and XIP indices, are correctly and deterministically generated.
- CI/CD Quality Gate: Integrate the validation script into development pipelines to automatically reject non-compliant agent skills before they are merged into the codebase.
| name | skill-validation-gf3 |
|---|---|
| description | Skill Validation GF(3) - SLAVE (-1) |
| version | 1.0.0 |
Skill Validation GF(3) - SLAVE (-1)
"The validator constrains and verifies."
XIP Assignment
| Property | Value |
|---|---|
| XIP Color | #4857D5 |
| Gay.jl Index | 8 |
| Role | SLAVE (-1) |
| Triad | PR#7 (GAY) + PR#8 (SLAVE) + PR#9 (MASTER) = 0 ✓ |
Purpose
This skill validates that all skills in the repository:
- Follow GF(3) conservation across triads
- Have deterministic Gay.jl colors assigned
- Maintain role consistency (GAY/MASTER/SLAVE)
Validation Rules
Rule 1: Skill Structure
Every skill must have:
skills/<skill-name>/
├── SKILL.md # Required
├── *.py|*.rb|*.jl # Implementation (optional)
└── tests/ # Validation tests (optional)
Rule 2: GF(3) Triad Declaration
Skills should declare their triad membership:
## GF(3) Triad
| Role | Skill | Trit |
|------|-------|------|
| GAY (+1) | skill-a | +1 |
| MASTER (0) | skill-b | 0 |
| SLAVE (-1) | skill-c | -1 |
Sum: (+1) + (0) + (-1) = 0 ✓
Rule 3: Color Assignment
Colors must be deterministic via Gay.jl:
from gay_mcp import color_at
# Verify skill color
assert color_at(seed=2025, index=8)['hex'] == '#4857D5'
Validation Script
#!/usr/bin/env python3
"""Validate all skills for GF(3) conservation."""
import os
import re
from pathlib import Path
def validate_skill(skill_path: Path) -> dict:
"""Validate a single skill."""
skill_md = skill_path / "SKILL.md"
if not skill_md.exists():
return {"valid": False, "error": "Missing SKILL.md"}
content = skill_md.read_text()
# Check for role declaration
role_match = re.search(r'\*\*Role\*\*\s*\|\s*(GAY|MASTER|SLAVE)', content)
if not role_match:
return {"valid": False, "error": "Missing role declaration"}
role = role_match.group(1)
trit = {"GAY": 1, "MASTER": 0, "SLAVE": -1}[role]
# Check for color
color_match = re.search(r'#([0-9A-Fa-f]{6})', content)
color = color_match.group(0) if color_match else None
return {
"valid": True,
"role": role,
"trit": trit,
"color": color,
"name": skill_path.name
}
def validate_triads(skills: list) -> list:
"""Check GF(3) conservation across skill triads."""
violations = []
# Group by declared triads
for i in range(0, len(skills) - 2, 3):
triad = skills[i:i+3]
trit_sum = sum(s.get("trit", 0) for s in triad if s.get("valid"))
if trit_sum % 3 != 0:
violations.append({
"triad": [s.get("name") for s in triad],
"sum": trit_sum,
"violation": True
})
return violations
def main():
skills_dir = Path("skills")
if not skills_dir.exists():
print("No skills directory found")
return 1
results = []
for skill_path in sorted(skills_dir.iterdir()):
if skill_path.is_dir():
result = validate_skill(skill_path)
results.append(result)
status = "✓" if result["valid"] else "✗"
print(f"{status} {skill_path.name}: {result.get('role', 'unknown')} ({result.get('trit', '?')})")
violations = validate_triads(results)
if violations:
print(f"\n⚠️ GF(3) Violations: {len(violations)}")
for v in violations:
print(f" - {v['triad']}: sum={v['sum']}")
return 1
print(f"\n✓ All {len(results)} skills validated, GF(3) conserved")
return 0
if __name__ == "__main__":
exit(main())
Test Suite
# tests/test_gf3_validation.py
import pytest
def test_triad_conservation():
"""Verify (+1) + (0) + (-1) = 0."""
assert (1 + 0 + -1) == 0
def test_role_trit_mapping():
"""Verify role to trit mapping."""
roles = {"GAY": 1, "MASTER": 0, "SLAVE": -1}
assert sum(roles.values()) == 0
def test_color_determinism():
"""Verify Gay.jl color is deterministic."""
# Mock: In production, call actual Gay.jl MCP
expected = "#4857D5"
actual = "#4857D5" # color_at(seed=2025, index=8)
assert actual == expected
Bisimulation Game Role
As the SLAVE (-1) in the bisimulation game:
- Attacker move: This skill distinguishes valid from invalid skill structures
- Constraint function: Enforces GF(3) conservation law
- Verification: Proves triads sum to zero
Integration with PR Trajectory
This skill is predicted as PR#8 in the plurigrid/asi trajectory:
| PR# | Author | Role | Trit | Status |
|---|---|---|---|---|
| 7 | zubyul | GAY | +1 | Merged |
| 8 | ? | SLAVE | -1 | This PR |
| 9 | zubyul | MASTER | 0 | Predicted |
Triad 3 conservation: (+1) + (-1) + (0) = 0 ✓
XIP Color: #4857D5
Gay.jl Seed: 2025
Gay.jl Index: 8
Role: SLAVE (-1)
Scientific Skill Interleaving
This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:
Graph Theory
- networkx [○] via bicomodule
- Universal graph hub
Bibliography References
general: 734 citations in bib.duckdb
Cat# Integration
This skill maps to Cat# = Comod(P) as a bicomodule in the equipment structure:
Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ⊗
Kan Role: Adj
Color: #26D826
GF(3) Naturality
The skill participates in triads satisfying:
(-1) + (0) + (+1) ≡ 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.