client-cms
Add a secure client-facing admin/content layer to the current website so nontechnical staff can edit approved content without touching source.
Skill by mhshaon98
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/mhshaon98-client-cms
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/client-cms
What's inside
- Skill name
client-cms- Description
- Add a secure client-facing admin/content layer to the current website so nontechnical staff can edit approved content without touching source. Use on /client-cms, "add an admin panel", or when the user wants site content editable by a client or business owner.
- License
- MIT
- Instructions
- 175 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- inline-editing.md · references/
SKILL.md (first lines)
# Client CMS — a safe content layer for client-managed websites Core conceptual model, always: **Authorized admin edits approved content → content is stored in an appropriate persistence/content layer → the live public website consumes and displays it.** A Postgres-backed admin dashboard is ONE valid instance of this pattern — never a mandate. **The architecture follows the project, not the other way around.** This skill states the capability, constraints, and outcome; you (the executing model) are the architect and decide the best technical implementation for THIS website. Treat it as an end-to-end engineering task — public site, admin UI, persistence, auth, and content flow must actually work together — not "generate an admin page". ## Phase 0 — Inspect before deciding (mandatory, no shortcuts) Understand the project before proposing anything. Do not decide from filenames or a glance at the tree. Establish at minimum: - Framework/language, rendering model (static, SSR/SSG, SPA, hybrid), frontend architecture, backend (if any), database (if any). - Authentication system (if any), hosting/deployment target, existing APIs. - **Existing CMS or content system** — if one exists (headless CMS, content collections, markdown/frontmatter content, admin routes), extending it is the default; adding a second content system needs strong justification. - Project structure and conventions, design system/components, how content is currently stored and rendered, any existing admin capabilities. - Security/infrastructure constraints that shape the design. If the stack, platform, or deployment system has current best practices you are not certain of, research them (web search/docs) before committing to an architecture. Two edge cases, handled here and not later: if the project is **not a public-facing website at all** (CLI tool, pipeline, library), stop and confirm with the user before proceeding — never force a content layer onto a non-web project. If a **partial or broken admin/CMS already exists** (half-built earlier, abandoned mid-way), assess its state and decide extend / repair / replace with stated justification — never assume greenfield. ## Phase 1 — Content inventory (judgment, not a mechanical sweep) Identify what a nontechnical business owner would reasonably manage: headings, hero copy, paragraphs, images/media, FAQs, testimonials, announcements, business/contact info, hours, social links, pricing, services, team members, news/blog, promotions, CTAs, repeated homepage sections — *examples, not a checklist*. - **Client-editable:** business-managed copy, media, and repeatable content items. - **Developer-controlled (never exposed):** layout system, routes, application logic, styling/design tokens, infrastructure, source code, anything whose edit could break the site. Do NOT turn every value into editable content. Produce a short grouped inventory and scale scope to the site: a small marketing site gets a lightweight editor; a content-heavy site gets a more structured system. **Checkpoint — confirm before building.** Present the inventory and the proposed architecture (Phase 2) to the user and get scope confirmed before implementing. This operation adds auth and rewires a live website's read paths — it is not built autonomously off a silent plan. ## Phase 2 — Architecture (let the site pick the stack) Choose storage and delivery from what exists and where it deploys. The option space spans (non-exhaustive): JSON/markdown flat files committed or written at runtime, SQLite, the project's existing database, a hosted backend (e.g. Supabase/Firebase), server actions/API routes, a traditional framework's own admin scaffolding (WordPress/Rails/Django-style), or an existing headless CMS. Decision drivers: - **Reuse first.** Existing DB/auth/API/CMS beats new infrastructure. Introduce new infrastructure only when nothing suitable exists, and pick the lightest thing the hosting environment supports (a static host with no runtime may need a build-time or hosted content source; an SSR app can read at request time). - **One content module.** All reads AND writes go through a single content layer/module with defined shapes — not scattered fetches. This is also what keeps the door open for future automations/AI agents updating approved content through a safe API instead of source edits. Don't build that API speculatively; just don't architect it away. - **Fallbacks.** Public pages must render sensibly if the content layer is empty or unreachable (seed data / build-time defaults), and rendering must remain visually identical to today. - **Static/client-only targets.** Writes still go through a server/serverless function or a backend with server-enforced policies — the shipped client bundle is NEVER the authorization boundary, and admin/service-role keys never ship in it. ## Phase 3 — Auth, authorization, and security Run the `security-pass` skill for this phase when available; its checklist applies in full (secrets, keys, RLS/policies, live-backend advisors, re-run after fixes). - Admin surface reachable only by authenticated, authorized users. Reuse the project's existing auth if present; otherwise add the simplest robust mechanism appropriate to the platform. Never invent home-rolled crypto/session schemes when the platform provides one. - **Every write is authorized server-side** — including that the record being edited belongs to this admin's scope (never trust an ID from the client). Client-side route hiding is not security. Validate and bound all input (types, lengths, allowed fields). - **CSRF:** with cookie-based sessions, a valid session cookie is not sufficient authorization for a write — use the framework's CSRF tokens, or SameSite cookies plus origin checks, on every state-changing admin request. - **Output-context encoding:** escape every content value for its actual sink — HTML, attribute, URL, JS, JSON-LD — not just the rich-text field (which gets XSS sanitization). Validate URL-type fields to http/https/mailto so a "link" field can't carry `javascript:`/`data:`. - **Media uploads:** validate by content signature, not extension; bound size; disallow or sanitize/rasterize SVG and HTML (they execute script when served from the app origin); store outside the source tree or in platform storage; never trust filenames; serve user media with non-executable content types. If media can be added by URL and the server fetches it, that is SSRF-sensitive — restrict schemes and block private/link-local ranges. - Secrets in env/config, never committed; rate-limit or otherwise protect the login surface. Do not weaken any existing security posture to make content editable. ## Phase 4 — Admin experience Simple enough for a nontechnical employee: plain text fields by default, rich text only where the content needs it, image/media pickers, repeatable items with add/remove/reorder, appropriate validation, clear save/publish affordance, preview where feasible (behind the same authorization as the editor — draft content must not
From mhshaon98/agent-skills, MIT.
More from mhshaon98/agent-skills
- 0.570score
eng-report
mhshaon98
Apply an engineering house style (vendor-manual layout, the user's own logo and colours, ANSI safety notices, document-control blocks) to a Word, Markdown or…
SkillAFreshness: AClaude Code +9 - 0.567score
compliance-check
mhshaon98
Check what is actually live (store listing and labels, published policies, deployed backend, retention jobs) against the code and published words, then work…
SkillAFreshness: AClaude Code +9 - 0.567score
codex-bridge
mhshaon98
Delegate a task to OpenAI Codex or get a non-Claude second review via the codex plugin.
SkillAFreshness: AClaude Code +9 - 0.567score
doc-metadata
mhshaon98
Stamp the project's chosen author and company on every Word, Excel, PowerPoint or PDF file the agent creates or edits, and strip tool and AI fingerprints such…
SkillAFreshness: AClaude Code +9 - 0.567score
antigravity-bridge
mhshaon98
Delegate bounded work or get a third-provider opinion from Google's Antigravity CLI (agy, Gemini).
SkillAFreshness: AClaude Code +9 - 0.567score
call-handoff
mhshaon98
Cold-start briefing from the project's newest handoff, open bugs and next-session prompt in two round-trips, then stop.
SkillAFreshness: AClaude Code +9 - 0.567score
commissioning-logger
mhshaon98
Only when explicitly asked to log a multi-step hands-on process (commissioning, wiring, bring-up, troubleshooting): "log this", "start a commissioning log"…
SkillAFreshness: AClaude Code +9 - 0.565score
new-project
mhshaon98
Bootstrap a brand-new project with proven architecture defaults and continuity scaffolding.
SkillAFreshness: AClaude Code +9 - 0.565score
bug-ledger
mhshaon98
Use when a bug is reported, found, fixed, or reopened, or before working in a bug-prone area.
SkillAFreshness: AClaude Code +9 - 0.565score
apply-richformat
mhshaon98
Give any text-bearing surface (app screen, document, report, README, chat answer, CLI output, table) visible rank and separation.
SkillAFreshness: AClaude Code +9 - 0.565score
deepen
mhshaon98
Before planning a substantial build, redesign, feature, research question or subagent brief, answer four questions (what a top professional would add, the…
SkillAFreshness: AClaude Code +9 - 0.563score
app-audit
mhshaon98
Automated technical and disclosure compliance-assistance audit of a project: profiling, read-only specialist subagents, fresh research, optional Codex peer…
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 6, 2026 (23 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/mhshaon98/agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from mhshaon98
- 0.570score
eng-report
mhshaon98
Apply an engineering house style (vendor-manual layout, the user's own logo and colours, ANSI safety notices, document-control blocks) to a Word, Markdown or…
SkillAFreshness: AClaude Code +9 - 0.567score
codex-bridge
mhshaon98
Delegate a task to OpenAI Codex or get a non-Claude second review via the codex plugin.
SkillAFreshness: AClaude Code +9 - 0.567score
commissioning-logger
mhshaon98
Only when explicitly asked to log a multi-step hands-on process (commissioning, wiring, bring-up, troubleshooting): "log this", "start a commissioning log"…
SkillAFreshness: AClaude Code +9 - 0.567score
doc-metadata
mhshaon98
Stamp the project's chosen author and company on every Word, Excel, PowerPoint or PDF file the agent creates or edits, and strip tool and AI fingerprints such…
SkillAFreshness: AClaude Code +9 - 0.567score
call-handoff
mhshaon98
Cold-start briefing from the project's newest handoff, open bugs and next-session prompt in two round-trips, then stop.
SkillAFreshness: AClaude Code +9 - 0.567score
antigravity-bridge
mhshaon98
Delegate bounded work or get a third-provider opinion from Google's Antigravity CLI (agy, Gemini).
SkillAFreshness: AClaude Code +9
Cite this page
client-cms skill. Agent Mart. https://agentmart.dev/skills/mhshaon98-client-cms (last updated 2026-10-24)