Content Registration SOP¶
Standard Operating Procedure | Version 1.0 | 2026-03-22 Owner: Project Manager | Applies to: ALL 21 agents
Purpose¶
Every deliverable file produced by any agent MUST be registered in the Airtable Content Registry. This SOP defines when, how, and what to register.
1. When to Register¶
Register a file in the Content Registry whenever you produce:
- HTML reports, dashboards, or portals
- PDF documents
- Markdown deliverables (frameworks, specs, playbooks, SOPs, briefs)
- Python/Shell scripts that are deliverables (not throwaway debug scripts)
- Excel/Word/PowerPoint documents
- Design assets (brand files, diagrams, templates)
- Configuration files that are part of a shipped product
- Research outputs (synthesized briefs, competitive intel)
Do NOT register:
- Temporary/scratch files
- node_modules/, .git/, __pycache__/ contents
- Chat history exports (these are auto-cataloged separately)
- Agent-local TASKS.md files (auto-generated by sync script)
2. Required Fields¶
Every record in the Content_Files table requires these fields:
| Field | API Name | Where to Find the Value |
|---|---|---|
| Title | flde1dNkgPGGC13Hq |
Human-readable name (derived from filename or content heading) |
| File Type | fldRYiEvc1hmlzCpT |
One of: Markdown, HTML, Python, Shell, JSON, CSV, PDF, Excel, Word, PowerPoint, Image, Google, YAML, SQL, Other |
| Content Category | fldRMIXZPwWvJOK3X |
One of: IP, Sales, Marketing, Research, Operations, Legal, Design, Product, Platform, Integration, Context, Brand, Knowledge, Content |
| Owner Agent | fldRBJguUbrHZIaP4 |
The agent that created/owns the file (e.g., Revenue.OS, Code.Platform) |
| Local Path | fldw6c7gKhexOqvwB |
Relative path from Project Manager root (e.g., Revenue.OS/frameworks/eri-v2.md) |
| Absolute Path | fldlsqJ1wcowilwjC |
Full macOS path (e.g., /Users/rhartley/ecomonetize/Project.Manager/Revenue.OS/frameworks/eri-v2.md) |
| Status | fldG6Gp630wYvDl5b |
One of: Published, Draft, Active, Archived, Deprecated |
| Visibility | fldYyM5xw4UPIUXAG |
internal (agent/Rick only) or external (client-facing) |
| Content Hash | fldiFnZDx6jQnYXe9 |
MD5 hash of file contents. Generate with: md5 -q <filepath> (macOS) or md5sum <filepath> (Linux) |
Optional but Recommended Fields¶
| Field | API Name | Notes |
|---|---|---|
| Summary | fldcCk3vPnajlMsHp |
1-2 sentence description |
| Version | fldyI53hvKf5lUqNt |
Follows v[major].[minor] convention (e.g., v1.0) |
| Product Module | flddklVYjfudSl7uZ |
One of: Scorecard, Meeting Intelligence, Intelligence Engine, Heatmap, Account Intelligence, Revenue Play Engine, EcoTask, CRM Activation, Signal Fabric, Revenue OS, General |
| Tags | fldJQs36pkECwB5CM |
Array of: framework, deliverable, script, config, template, report, diagram, playbook, spec, sop |
| File Size Bytes | fldF2RxbHIxSCXN7u |
Output of wc -c < <filepath> or stat -f%z <filepath> |
| Last Updated | fldLDyigLGdR8PfoQ |
ISO 8601 datetime (e.g., 2026-03-22T14:30:00.000Z) |
3. Airtable Base and Table IDs¶
| Resource | ID |
|---|---|
| Base (Operations Intelligence Hub) | app4gfvpLI5EKQqES |
| Content_Files table | tbligPMgI47zw4Tq3 |
| Content_Collections table | tbl2E8vzg6bZuFalI |
| Content_Versions table | tbl7UHNcp0XUGXRD6 |
| Content_Tags table | tblSekfRgcL1vWvYk |
Full schema reference: _Shared/Operations/content-registry-schema.md
4. How to Register Manually via Airtable MCP¶
Use the Airtable MCP tool mcp__claude_ai_Airtable__create_records_for_table with:
base_id: app4gfvpLI5EKQqES
table_id_or_name: tbligPMgI47zw4Tq3
records: [
{
"fields": {
"Title": "My Deliverable Name",
"File Type": "HTML",
"Content Category": "Sales",
"Owner Agent": "CRO.Sales",
"Local Path": "CRO.Sales/my-deliverable-v1.0.html",
"Absolute Path": "/Users/rhartley/ecomonetize/Project.Manager/CRO.Sales/my-deliverable-v1.0.html",
"Status": "Published",
"Visibility": "external",
"Content Hash": "abc123def456...",
"Version": "v1.0",
"File Size Bytes": 45000,
"Summary": "Sales page for the ERI briefing offer"
}
}
]
typecast: true
Important API constraints:
- Maximum 10 records per create/update call (Airtable API limit)
- Always use typecast: true -- this allows string values for select fields without pre-creating options
- Rate limit: 5 requests/second per base
- DateTime format: ISO 8601 (2026-03-22T14:30:00.000Z)
5. Safety Net: file-registry-sync.py --delta¶
The file-registry-sync.py script (planned, owned by Code.Assistant) will:
- Scan the filesystem for files not yet in the registry
- Compute content hashes and compare against existing records
- Generate a delta report of unregistered files
- Optionally push new records to Airtable in batches of 10
Run manually:
This is a safety net -- agents should still register files at creation time. The sync script catches anything that slipped through.
Note (2026-03-22): This script is planned but not yet implemented. Until it exists, agents must self-register all deliverables manually.
6. Version Tracking¶
When updating an existing file to a new version:
- Update the Content_Files record -- change Version, Content Hash, File Size, Last Updated
- Create a Content_Versions record in
tbl7UHNcp0XUGXRD6:
records: [
{
"fields": {
"Version Label": "my-deliverable v1.1",
"File": ["<record_id_from_Content_Files>"],
"Version Number": "v1.1",
"Change Log": "Updated scoring logic, added new section on governance",
"Uploaded By": "Revenue.OS",
"Local Path": "Revenue.OS/frameworks/my-deliverable-v1.1.md"
}
}
]
- If the old version file still exists (e.g., archived with
-archivesuffix), update its Content_Files status toArchived.
7. Dedup Checking (content_hash)¶
Before registering a new file, check if its content hash already exists in the registry:
- Compute the MD5 hash:
md5 -q /path/to/file - Search the Content_Files table for a matching hash using
mcp__claude_ai_Airtable__list_records_for_tablewith a formula filter: - If a match is found:
- If it is the same file at the same path -- update the existing record (no new entry)
- If it is a different file with identical content -- flag as duplicate. Set
Is Duplicatecheckbox and link viaDuplicate Offield - If the matched record is Archived but your file is new -- create a new record (content may have been reused intentionally)
8. Common Pitfalls¶
| Pitfall | How to Avoid |
|---|---|
| Forgetting to register after creating a file | Add registration as the last step of every deliverable workflow |
| Using wrong Content Category | Check the allowed values in Section 2. When in doubt, use Operations |
| Missing content_hash | Always compute the hash. It is the primary dedup mechanism |
| Exceeding 10-record batch limit | Split into multiple API calls. The sync script handles this automatically |
| Registering agent-local TASKS.md | These are auto-generated -- do NOT register them |
| Using relative paths for Absolute Path | Always use full path starting with /Users/rhartley/... |
| Registering node_modules or build artifacts | Only register source files and deliverables, not generated dependencies |
| Forgetting typecast:true | Without it, new select values will throw errors |
| Using wrong agent name in Owner Agent | Must match exactly: Revenue.OS not revenue.os or Revenue OS. See schema for full list |
SOP created: 2026-03-22 | Review cycle: Quarterly