client-vs-internal
Skill9 starsChanged 27 days agoMITView on GitHub
Use ONLY when docs/audience.md exists (audiences defined during onboarding) OR the operator explicitly asks to optimize a surface for client-facing vs internal use. Steers app surfaces differently — client-facing = simple/guided/trust-first; internal = robust controls/power-features. If docs/audience.md is absent and the operator did not explicitly request the posture check, this skill does nothing (silent no-op) — do NOT create the file. Not for projects without defined audiences.
In this repository119 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- .cursor/rules/fusebase-flow-always.mdcCursor rule
- .cursor/rules/fusebase-flow-implementation.mdcCursor rule
- .cursor/rules/fusebase-flow-security.mdcCursor rule
- .cursor/rules/fusebase-flow-specs.mdcCursor rule
- .cursor/rules/fusebase-flow-validation.mdcCursor rule
- api-explorationSkill
- app-api-contract-testingSkill
- app-backendSkill
- app-business-docsSkill
- app-dev-practicesSkill
- app-e2e-testsSkill
- app-quality-patternsSkill
- app-routingSkill
- app-secretsSkill
- app-sidecarSkill
- app-ui-designSkill
- business-logic-guardianSkill
- code-reviewSkill
- comment-policySkill
- communicationSkill
- design-discovery-ideationSkill
- dev-debug-logsSkill
- documentation-budgetSkill
- file-uploadSkill
- find-wasted-codeSkill
- find-wasted-effortSkill
- fusebase-cliSkill
- fusebase-dashboardsSkill
- fusebase-flow-health-checkSkill
- fusebase-gateSkill
- fusebase-portal-specific-appsSkill
- git-history-diagnosticSkill
- git-workflowSkill
- handling-authentication-errorsSkill
- handoffSkill
- implementation-planningSkill
- invite-with-passwordSkill
- lightweight-laneSkill
- liveness-disciplineSkill
- managed-integrationsSkill
- mcp-gate-debugSkill
- module-size-disciplineSkill
- north-starSkill
- phase-auditSkill
- product-apps-decompositionSkill
- product-docs-firstSkill
- product-ownerSkill
- project-onboardingSkill
- release-deploy-reportingSkill
- remote-logsSkill
- repo-onboarding-context-mapSkill
- requirements-specificationSkill
- role-disciplineSkill
- security-permissions-reviewSkill
- skill-authoringSkill
- smoke-testingSkill
- task-delegationSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 3 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 116
Do not activate when docs/audience.md is absent unless the operator explicitly requests the posture check and states the audience.
- Distinctive: line 117
Do not make client surfaces Salesforce-complex.
- Distinctive: line 118
Do not strip necessary controls from internal surfaces for "simplicity".
- Distinctive: line 119
Do not leave the classification chat-only when a spec is in flight — posture rows become ACs (step 5) or they evaporate.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Client vs Internal
Style: Mode-B-lite. Artifact-gated by default — inert unless
docs/audience.mdexists or the operator explicitly requests the posture check.
Purpose
Client-facing teams build for two very different audiences. Clients need simplicity and trust (never Salesforce-complex); internal teams need robust controls and power-features. This skill applies the right posture to each surface, using the audiences defined at onboarding (or the audience the operator states when explicitly requesting the check).
When to invoke
docs/audience.mdexists AND a UI/app surface is being designed or built.- Operator says "is this for clients or internal", "simplify for the client", "this is an internal tool".
Do not invoke when
docs/audience.mdabsent and no explicit operator request → silent no-op; do not activate or create it.- Non-UI / backend-only work with no audience-facing surface.
Required inputs
| Input | Where it lives | If missing |
| Audience definitions | docs/audience.md or the audience stated in an explicit operator posture-check request | STOP — no-op only when both are absent. Do not create the file; onboarding (/onboard) creates it. |
| Surface being built | current task | nothing to classify; exit |
Procedure
- Existence gate (FIRST STEP). No
docs/audience.mdand no explicit operator posture-check request → exit silently. If the operator explicitly requested the check and stated the audience, continue with that audience without creating the file. - Read
docs/audience.mdwhen present (which surfaces are client-facing vs internal; per-audience needs); otherwise use the audience stated in the explicit operator request. - Classify the surface in scope: client-facing, internal, or shared.
- Apply the matching posture checklist (§ Posture checklists below): client-facing, internal, or shared — walk every row for the surface in scope; each row is pass / fail / N-A, not vibes.
- Persist — the classification must not evaporate in chat. If a spec is in flight (or being drafted) for this surface, hand the result to
requirements-specification: the posture + each applicable checklist row becomes a numbered spec AC citing its ID (e.g., "AC7 — client-facing surface: destructive actions confirm with object + consequence before executing (client-vs-internal C2)"), alongside the QP-xx ACs fromapp-quality-patterns(C2/C4 overlap the QP delete-policy and empty/loading/error patterns — cite both IDs on one AC line, don't duplicate the AC). No spec in flight → record posture + failed rows in the design brief or change-note so Implement andcode-reviewinherit them. - Flag mismatches (e.g. exposing internal complexity to a client surface) and recommend the audience-appropriate alternative.
- Ambiguous audience → ask the operator (FR-19).
Worked example
Operator: "This billing settings page is client-facing; run the posture check."
- Classify
Billing settingsas client-facing from the explicit request. - Apply C2 because cancellation is destructive.
- Spec AC:
AC4 — Cancellation confirms the subscription and consequence before executing (client-vs-internal C2).
Output: client-facing posture + AC4 handed to requirements-specification.
Posture checklists
Apply per classified surface. Row IDs (C/I/S-n) are citable in spec ACs (step 5).
Client-facing — simple, guided, trust-first:
| ID | Check | Concretely |
| C1 | No internal jargon or raw IDs | Labels/errors/emails use the client's domain words; no record IDs, status enums, table names, or team slang on any client-visible string |
| C2 | Confirm before destructive | Delete/cancel/send/submit-final actions show an explicit confirm naming the object + consequence; no one-click irreversible ops (overlaps QP delete-cascade ACs — cite both) |
| C3 | Guided defaults | Happy path completes with pre-filled sensible values and zero configuration; advanced options collapsed behind an explicit affordance |
| C4 | Reassuring empty/error/loading states | Empty = what this is + the first step to take; error = plain words + what to do next, never stack traces or status codes; loading = visible progress (overlaps QP UI-polish patterns — cite both) |
| C5 | No admin affordances | No bulk-delete, impersonation, raw-data export, config, or diagnostics reachable from client routes — removed, not hidden |
| C6 | Portal-embed + permission scoping | Surface works embedded in the client portal (CLI skill fusebase-portal-specific-apps); every query scoped to the client's own records — verify the permission model, never assume |
Internal — robust, efficient, transparent:
| ID | Check | Concretely |
| I1 | Bulk operations | Multi-select + bulk edit/delete/export wherever lists exist |
| I2 | Audit visibility | Who/when/what on records; change history visible, not buried |
| I3 | Keyboard + density efficiency | Dense tables, keyboard nav, fast filters; optimize for repeat power use, not first-run hand-holding |
| I4 | Full error detail | Real causes + IDs surfaced — internal users debug; don't over-soften |
Shared surfaces (both audiences):
| ID | Check | Concretely |
| S1 | Role-gated affordances | Internal-only controls rendered only for internal roles — gate by permission check, never by CSS hiding or an unlinked route |
| S2 | Progressive disclosure | Client-simple default view; power controls behind an explicit "advanced" affordance that internal roles see |
Output artifacts
| Artifact | Location | Mode |
| Audience classification + posture guidance | chat / design brief | Mode A / Mode-B-lite |
| Posture checklist ACs (C/I/S IDs cited) | docs/specs/<slug>/spec.md via requirements-specification | Mode B |
Failure cases
| Failure | Detection | Response |
| Artifact absent with no explicit operator request | step 1 | silent no-op (correct) |
| Client surface over-complex | step 6 | flag; recommend simplification |
Escalation path
- Ambiguous audience → ask operator (FR-19).
- Audience model needs updating →
project-onboarding.
Anti-patterns
- Do not activate when
docs/audience.mdis absent unless the operator explicitly requests the posture check and states the audience; never create the file from this skill. - Do not make client surfaces Salesforce-complex.
- Do not strip necessary controls from internal surfaces for "simplicity".
- Do not leave the classification chat-only when a spec is in flight — posture rows become ACs (step 5) or they evaporate.
Clean-room note
Original Fusebase Flow content. See docs/source-map.md. No third-party code, prompts, or skill files copied.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

