go-cms-filesystem

Implements filesystem disk declarations, drivers, and module aliases for the GO CMS backend.

Updated Jun 15, 2026
One-click install
npx skills add https://github.com/vernal96/go-cms --skill go-cms-filesystem-vernal96
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: go-cms-filesystem
Source: https://github.com/vernal96/go-cms/tree/main/.codex/skills/go-cms-filesystem
Command: npx skills add https://github.com/vernal96/go-cms --skill go-cms-filesystem-vernal96

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? It prevents architectural mistakes when working with the GO CMS storage layer, such as hardcoding disk names, persisting mutable labels instead of stable disk codes, or confusing drivers, visibility, and module aliases. ## Core Features & Use Cases - Filesystem mental model: Enforces separation between drivers (local, S3), physical disks with stable codes and human labels, visibility policies, and module-local aliases. - Project disk declarations: Guides declaring disks as Go factories under backend/internal/filesystems with typed environment configuration instead of JSON env lists. - Admin and module integration: Covers the FileExplorer disk catalog flow, file picker restrictions by disk code, and module alias bindings resolved through ModuleContext. - Use Case: When adding a new S3-backed media disk to the CMS, follow the skill to declare the disk factory, bind module aliases, expose it through the /api/files/disks catalog, and add the required tests. ## Quick Start Ask the assistant to add a new private S3 disk named documents to the GO CMS project and wire it into the admin FileExplorer.

Frequently Asked Questions about go-cms-filesystem

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new storage disk in GO CMS?▼

Declare a new Go factory under backend/internal/filesystems with its code, label, driver, and visibility, then register it in internal/config.Config.Application. Use corefiles.NewFactory for local or S3 declarations without changing kernel/filesystem code.

What is the difference between a disk code, label, and driver?▼

The code is the stable machine identifier persisted in CMS data, the label is mutable human-facing text shown in admin UIs, and the driver is the physical storage technology such as local or S3. Never persist labels or infer visibility from codes.

Can a disk be renamed after files are stored in GO CMS?▼

Changing only the label is safe because it is presentation metadata. Changing the disk code changes storage identity since codes are persisted in core.files and core.file_folders, so it requires an explicit data migration.

How do modules access storage without hardcoding disk names?▼

Modules resolve storage through local aliases like spool or attachments via ModuleContext.Filesystems(), and a profile binds each alias to a physical project disk. Aliases describe purpose, never driver names like s3 or local.

Does GO CMS support both public and private S3 disks?▼

Yes, visibility is independent of the driver, so local and S3 disks can each be public or private. Private disks must use the established temporary signed URL behavior while public disks expose normal URLs.

Should infrastructure spool files be stored as CMS file records?▼

No, transient infrastructure objects like Mail or Forms spool data should use a module alias bound to a private disk without creating core.files rows. They never appear in FileExplorer and use a module namespace or prefix.