@activatus/code-standards 0.0.0-stage → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +200 -2
- package/docs/Guides/_category_.json +4 -0
- package/docs/Guides/component-library-workflow.md +182 -0
- package/docs/Guides/migrating.md +144 -0
- package/docs/Guides/setup.md +130 -0
- package/docs/Standards/_category_.json +4 -0
- package/docs/Standards/agent-skills.md +125 -0
- package/docs/Standards/agent-specs.md +89 -0
- package/docs/Standards/branch-naming.md +66 -0
- package/docs/Standards/conventional-commits.md +189 -0
- package/docs/Standards/direnv.mdx +249 -0
- package/docs/Standards/documentation.md +311 -0
- package/docs/Standards/editorconfig.md +72 -0
- package/docs/Standards/eslint.md +709 -0
- package/docs/Standards/human-readable-names.md +234 -0
- package/docs/Standards/lint-errors.md +139 -0
- package/docs/Standards/prettier.md +97 -0
- package/docs/Standards/readable-code.md +540 -0
- package/docs/Standards/stylelint.md +178 -0
- package/docs/Standards/styling.md +284 -0
- package/docs/Standards/tech-stack.md +156 -0
- package/docs/Structure/_category_.json +4 -0
- package/docs/Structure/api-routes.md +118 -0
- package/docs/Structure/component-organization.md +519 -0
- package/docs/Structure/folder-structure.md +353 -0
- package/docs/Structure/import-organization.md +158 -0
- package/docs/Structure/naming-conventions.md +336 -0
- package/docs/design-system-components.md +117 -0
- package/docs/intro.md +46 -0
- package/docs/ontology.md +132 -0
- package/docs/templates.mdx +419 -0
- package/docs/version-history.md +211 -0
- package/package.json +56 -3
- package/static/templates/.commitlintrc.json +3 -0
- package/static/templates/.editorconfig +28 -0
- package/static/templates/.envrc +25 -0
- package/static/templates/.nvmrc +1 -0
- package/static/templates/AGENTS.md +160 -0
- package/static/templates/decision-doc.md +19 -0
- package/static/templates/docs/ai/agent-harness.md +17 -0
- package/static/templates/docs/ai/agents.md +17 -0
- package/static/templates/docs/ai/architecture.md +17 -0
- package/static/templates/docs/ai/context.md +17 -0
- package/static/templates/docs/ai/model-routing.md +17 -0
- package/static/templates/docs/ai/models.md +17 -0
- package/static/templates/docs/ai/retrieval.md +17 -0
- package/static/templates/docs/ai/tools.md +17 -0
- package/static/templates/docs/architecture/authentication.md +17 -0
- package/static/templates/docs/architecture/backend.md +17 -0
- package/static/templates/docs/architecture/background-jobs.md +17 -0
- package/static/templates/docs/architecture/backups.md +17 -0
- package/static/templates/docs/architecture/caching.md +17 -0
- package/static/templates/docs/architecture/ci-cd.md +17 -0
- package/static/templates/docs/architecture/disaster-recovery.md +17 -0
- package/static/templates/docs/architecture/environments.md +17 -0
- package/static/templates/docs/architecture/frontend.md +17 -0
- package/static/templates/docs/architecture/hosting.md +17 -0
- package/static/templates/docs/architecture/observability.md +17 -0
- package/static/templates/docs/architecture/realtime.md +17 -0
- package/static/templates/docs/architecture/search.md +17 -0
- package/static/templates/docs/architecture/services.md +17 -0
- package/static/templates/docs/architecture/state-management.md +17 -0
- package/static/templates/docs/architecture/storage.md +17 -0
- package/static/templates/docs/architecture/system.md +17 -0
- package/static/templates/docs/business/buying-trigger.md +17 -0
- package/static/templates/docs/business/customer-value.md +17 -0
- package/static/templates/docs/business/customer.md +17 -0
- package/static/templates/docs/business/defensibility.md +17 -0
- package/static/templates/docs/business/growth.md +17 -0
- package/static/templates/docs/business/pricing.md +17 -0
- package/static/templates/docs/business/revenue-model.md +17 -0
- package/static/templates/docs/business/unit-economics.md +17 -0
- package/static/templates/docs/data/analytics.md +17 -0
- package/static/templates/docs/data/audit.md +17 -0
- package/static/templates/docs/data/database.md +17 -0
- package/static/templates/docs/data/indexing.md +17 -0
- package/static/templates/docs/data/migrations.md +17 -0
- package/static/templates/docs/data/model.md +17 -0
- package/static/templates/docs/data/retention.md +17 -0
- package/static/templates/docs/data/schema.md +17 -0
- package/static/templates/docs/deployment/approval.md +17 -0
- package/static/templates/docs/deployment/live-verification.md +17 -0
- package/static/templates/docs/deployment/process.md +17 -0
- package/static/templates/docs/deployment/rollback.md +17 -0
- package/static/templates/docs/design/design-system.md +17 -0
- package/static/templates/docs/design/errors.md +17 -0
- package/static/templates/docs/design/feedback.md +17 -0
- package/static/templates/docs/design/interactions.md +17 -0
- package/static/templates/docs/design/layout.md +17 -0
- package/static/templates/docs/design/navigation.md +17 -0
- package/static/templates/docs/design/principles.md +17 -0
- package/static/templates/docs/design/responsive.md +17 -0
- package/static/templates/docs/development/branching.md +17 -0
- package/static/templates/docs/development/code-quality.md +17 -0
- package/static/templates/docs/development/coding-standards.md +17 -0
- package/static/templates/docs/development/commits.md +17 -0
- package/static/templates/docs/development/merge-strategy.md +17 -0
- package/static/templates/docs/development/process.md +17 -0
- package/static/templates/docs/development/pull-requests.md +17 -0
- package/static/templates/docs/experience/accessibility.md +17 -0
- package/static/templates/docs/experience/aha-moment.md +17 -0
- package/static/templates/docs/experience/anti-experience.md +17 -0
- package/static/templates/docs/experience/friction.md +17 -0
- package/static/templates/docs/experience/outcomes.md +17 -0
- package/static/templates/docs/experience/principles.md +17 -0
- package/static/templates/docs/experience/retention.md +17 -0
- package/static/templates/docs/experience/sharing.md +17 -0
- package/static/templates/docs/overview/how-it-works.md +17 -0
- package/static/templates/docs/overview/what-is-it.md +17 -0
- package/static/templates/docs/overview/writing-docs.md +16 -0
- package/static/templates/docs/pitch/alternatives.md +17 -0
- package/static/templates/docs/pitch/assumptions.md +17 -0
- package/static/templates/docs/pitch/audience.md +17 -0
- package/static/templates/docs/pitch/concept.md +17 -0
- package/static/templates/docs/pitch/differentiators.md +17 -0
- package/static/templates/docs/pitch/outcomes.md +17 -0
- package/static/templates/docs/pitch/problem.md +17 -0
- package/static/templates/docs/pitch/product-market-fit.md +17 -0
- package/static/templates/docs/pitch/success-criteria.md +17 -0
- package/static/templates/docs/pitch/validation.md +17 -0
- package/static/templates/docs/pitch/value-proposition.md +17 -0
- package/static/templates/docs/pitch/vision.md +17 -0
- package/static/templates/docs/scope/core.md +17 -0
- package/static/templates/docs/scope/exclusions.md +17 -0
- package/static/templates/docs/scope/future.md +17 -0
- package/static/templates/docs/scope/launch.md +17 -0
- package/static/templates/docs/scope/post-launch.md +17 -0
- package/static/templates/docs/scope/priorities.md +17 -0
- package/static/templates/docs/scope/quality-bar.md +17 -0
- package/static/templates/docs/security/audit.md +17 -0
- package/static/templates/docs/security/data-access.md +17 -0
- package/static/templates/docs/security/logging.md +17 -0
- package/static/templates/docs/security/privacy.md +17 -0
- package/static/templates/docs/security/secrets.md +17 -0
- package/static/templates/docs/security/threat-model.md +17 -0
- package/static/templates/docs/testing/end-to-end.md +17 -0
- package/static/templates/docs/testing/integration.md +17 -0
- package/static/templates/docs/testing/regression.md +17 -0
- package/static/templates/docs/testing/security.md +17 -0
- package/static/templates/docs/testing/strategy.md +17 -0
- package/static/templates/docs/testing/test-data.md +17 -0
- package/static/templates/docs/testing/unit.md +17 -0
- package/static/templates/docs/uat/checks.md +17 -0
- package/static/templates/docs/uat/strategy.md +17 -0
- package/static/templates/docs/users/permissions.md +17 -0
- package/static/templates/docs/users/roles.md +17 -0
- package/static/templates/docs/users/user-types.md +17 -0
- package/static/templates/docs/workflows/assignment.md +17 -0
- package/static/templates/docs/workflows/bugfix.md +17 -0
- package/static/templates/docs/workflows/dependencies.md +17 -0
- package/static/templates/docs/workflows/deployment.md +17 -0
- package/static/templates/docs/workflows/development.md +17 -0
- package/static/templates/docs/workflows/planning.md +17 -0
- package/static/templates/docs/workflows/review.md +17 -0
- package/static/templates/docs/workflows/uat.md +17 -0
- package/static/templates/docsSite/docusaurus.config.ts +119 -0
- package/static/templates/docsSite/gitignore.txt +3 -0
- package/static/templates/docsSite/package.json.txt +42 -0
- package/static/templates/docsSite/pnpm-workspace.yaml +2 -0
- package/static/templates/docsSite/sidebars.ts +8 -0
- package/static/templates/docsSite/src/css/custom.css +1 -0
- package/static/templates/docsSite/src/pages/index.tsx +9 -0
- package/static/templates/docsSite/static/images/logo.svg +4 -0
- package/static/templates/docsSite/tsconfig.json +7 -0
- package/static/templates/eslint/base/eslint.config.mjs +79 -0
- package/static/templates/eslint/nextjs/eslint.config.mjs +137 -0
- package/static/templates/eslint/react/eslint.config.mjs +138 -0
- package/static/templates/eslint/typescript/eslint.config.mjs +126 -0
- package/static/templates/globals.css +16 -0
- package/static/templates/husky/commit-msg +1 -0
- package/static/templates/husky/pre-commit +1 -0
- package/static/templates/next.config.mjs +18 -0
- package/static/templates/prettier.config.js +17 -0
- package/static/templates/skills/codeReview.md +31 -0
- package/static/templates/skills/format.md +18 -0
- package/static/templates/skills/lint.md +21 -0
- package/static/templates/skills/lintFix.md +24 -0
- package/static/templates/skills/securityAudit.md +28 -0
- package/static/templates/skills/test.md +24 -0
- package/static/templates/skills/typescript.md +28 -0
- package/static/templates/skills/updateLayout.md +20 -0
- package/static/templates/stylelint/css/stylelint.config.mjs +28 -0
- package/static/templates/stylelint/scss/stylelint.config.mjs +10 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 2
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
import CodeBlock from "@theme/CodeBlock";
|
|
6
|
+
import agents from "!!raw-loader!@site/static/templates/AGENTS.md";
|
|
7
|
+
import eslintTypescript from "!!raw-loader!@site/static/templates/eslint/typescript/eslint.config.mjs";
|
|
8
|
+
import eslintReact from "!!raw-loader!@site/static/templates/eslint/react/eslint.config.mjs";
|
|
9
|
+
import eslintNextjs from "!!raw-loader!@site/static/templates/eslint/nextjs/eslint.config.mjs";
|
|
10
|
+
import eslintBase from "!!raw-loader!@site/static/templates/eslint/base/eslint.config.mjs";
|
|
11
|
+
import prettier from "!!raw-loader!@site/static/templates/prettier.config.js";
|
|
12
|
+
import stylelintCss from "!!raw-loader!@site/static/templates/stylelint/css/stylelint.config.mjs";
|
|
13
|
+
import stylelintScss from "!!raw-loader!@site/static/templates/stylelint/scss/stylelint.config.mjs";
|
|
14
|
+
import globalsCss from "!!raw-loader!@site/static/templates/globals.css";
|
|
15
|
+
import editorconfig from "!!raw-loader!@site/static/templates/.editorconfig";
|
|
16
|
+
import nvmrc from "!!raw-loader!@site/static/templates/.nvmrc";
|
|
17
|
+
import envrc from "!!raw-loader!@site/static/templates/.envrc";
|
|
18
|
+
import commitlint from "!!raw-loader!@site/static/templates/.commitlintrc.json";
|
|
19
|
+
import skillLint from "!!raw-loader!@site/static/templates/skills/lint.md";
|
|
20
|
+
import skillLintFix from "!!raw-loader!@site/static/templates/skills/lintFix.md";
|
|
21
|
+
import skillFormat from "!!raw-loader!@site/static/templates/skills/format.md";
|
|
22
|
+
import skillCodeReview from "!!raw-loader!@site/static/templates/skills/codeReview.md";
|
|
23
|
+
import skillUpdateLayout from "!!raw-loader!@site/static/templates/skills/updateLayout.md";
|
|
24
|
+
import skillSecurityAudit from "!!raw-loader!@site/static/templates/skills/securityAudit.md";
|
|
25
|
+
import skillTypescript from "!!raw-loader!@site/static/templates/skills/typescript.md";
|
|
26
|
+
import skillTest from "!!raw-loader!@site/static/templates/skills/test.md";
|
|
27
|
+
import docsSitePackage from "!!raw-loader!@site/static/templates/docsSite/package.json.txt";
|
|
28
|
+
import docsSiteConfig from "!!raw-loader!@site/static/templates/docsSite/docusaurus.config.ts";
|
|
29
|
+
import docsSiteSidebars from "!!raw-loader!@site/static/templates/docsSite/sidebars.ts";
|
|
30
|
+
import docsSiteTsconfig from "!!raw-loader!@site/static/templates/docsSite/tsconfig.json";
|
|
31
|
+
import docsSiteWorkspace from "!!raw-loader!@site/static/templates/docsSite/pnpm-workspace.yaml";
|
|
32
|
+
import docsSiteCss from "!!raw-loader!@site/static/templates/docsSite/src/css/custom.css";
|
|
33
|
+
import docsSiteGitignore from "!!raw-loader!@site/static/templates/docsSite/gitignore.txt";
|
|
34
|
+
import decisionDoc from "!!raw-loader!@site/static/templates/decision-doc.md";
|
|
35
|
+
import docsSiteHome from "!!raw-loader!@site/static/templates/docsSite/src/pages/index.tsx";
|
|
36
|
+
import nextConfig from "!!raw-loader!@site/static/templates/next.config.mjs";
|
|
37
|
+
import huskyHook from "!!raw-loader!@site/static/templates/husky/commit-msg";
|
|
38
|
+
import huskyPreCommit from "!!raw-loader!@site/static/templates/husky/pre-commit";
|
|
39
|
+
|
|
40
|
+
# Templates
|
|
41
|
+
|
|
42
|
+
Ready-made files to copy into a project. Every config on this page is the exact file described in the standards — copy it, do not retype it.
|
|
43
|
+
|
|
44
|
+
Each file is also served as a plain file, so a person or an AI agent can fetch it directly instead of copying from this page.
|
|
45
|
+
|
|
46
|
+
| File | Copy to | Plain file |
|
|
47
|
+
| ------------------------------------------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
|
|
48
|
+
| [AGENTS.md](#agents) | `AGENTS.md` in the project root | [`/templates/AGENTS.md`](pathname:///templates/AGENTS.md) |
|
|
49
|
+
| [ESLint — TypeScript](#eslinttypescript) | `eslint.config.mjs` in the project root | [`/templates/eslint/typescript/eslint.config.mjs`](pathname:///templates/eslint/typescript/eslint.config.mjs) |
|
|
50
|
+
| [ESLint — React + TypeScript](#eslintreact) | `eslint.config.mjs` in the project root | [`/templates/eslint/react/eslint.config.mjs`](pathname:///templates/eslint/react/eslint.config.mjs) |
|
|
51
|
+
| [ESLint — Next.js](#eslintnextjs) | `eslint.config.mjs` in the project root | [`/templates/eslint/nextjs/eslint.config.mjs`](pathname:///templates/eslint/nextjs/eslint.config.mjs) |
|
|
52
|
+
| [ESLint — JavaScript / Node.js](#eslintbase) | `eslint.config.mjs` in the project root | [`/templates/eslint/base/eslint.config.mjs`](pathname:///templates/eslint/base/eslint.config.mjs) |
|
|
53
|
+
| [Prettier](#prettier) | `prettier.config.js` in the project root | [`/templates/prettier.config.js`](pathname:///templates/prettier.config.js) |
|
|
54
|
+
| [Stylelint — CSS and CSS Modules](#stylelintcss) | `stylelint.config.mjs` in the project root | [`/templates/stylelint/css/stylelint.config.mjs`](pathname:///templates/stylelint/css/stylelint.config.mjs) |
|
|
55
|
+
| [Stylelint — SCSS](#stylelintscss) | `stylelint.config.mjs` in the project root | [`/templates/stylelint/scss/stylelint.config.mjs`](pathname:///templates/stylelint/scss/stylelint.config.mjs) |
|
|
56
|
+
| [Global styles and colour palette](#globalscss) | `app/globals.css` | [`/templates/globals.css`](pathname:///templates/globals.css) |
|
|
57
|
+
| [EditorConfig](#editorconfig) | `.editorconfig` in the project root | [`/templates/.editorconfig`](pathname:///templates/.editorconfig) |
|
|
58
|
+
| [Node version](#nvmrc) | `.nvmrc` in the project root | [`/templates/.nvmrc`](pathname:///templates/.nvmrc) |
|
|
59
|
+
| [direnv](#envrc) | `.envrc` in the project root | [`/templates/.envrc`](pathname:///templates/.envrc) |
|
|
60
|
+
| [Commitlint](#commitlint) | `.commitlintrc.json` in the project root | [`/templates/.commitlintrc.json`](pathname:///templates/.commitlintrc.json) |
|
|
61
|
+
| [Agent skills](#skills) | `.agents/skills/` and `.claude/commands/` | Eight files — see [below](#skills) |
|
|
62
|
+
| [Husky commit hook](#husky) | `.husky/commit-msg` | [`/templates/husky/commit-msg`](pathname:///templates/husky/commit-msg) |
|
|
63
|
+
| [Docs site](#docs-site) | `docsSite/` in the project root | Several files — see [below](#docs-site) |
|
|
64
|
+
| [`/docs` route](#docs-route) | `next.config.mjs` | [`/templates/next.config.mjs`](pathname:///templates/next.config.mjs) |
|
|
65
|
+
| [Document templates](#document-templates) | `docs/` in the project root | Several files — see [below](#document-templates) |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## AGENTS.md {#agents}
|
|
70
|
+
|
|
71
|
+
**Copy to:** `AGENTS.md` in the project root
|
|
72
|
+
|
|
73
|
+
Replace every `[placeholder]`. See [AGENTS.md Specifications](/Standards/agent-specs).
|
|
74
|
+
|
|
75
|
+
<CodeBlock language="markdown" title="AGENTS.md">
|
|
76
|
+
{agents}
|
|
77
|
+
</CodeBlock>
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## ESLint — TypeScript {#eslinttypescript}
|
|
82
|
+
|
|
83
|
+
**Copy to:** `eslint.config.mjs` in the project root
|
|
84
|
+
|
|
85
|
+
For TypeScript projects. Install commands are on the [ESLint page](/Standards/eslint#installation).
|
|
86
|
+
|
|
87
|
+
<CodeBlock language="js" title="eslint.config.mjs">
|
|
88
|
+
{eslintTypescript}
|
|
89
|
+
</CodeBlock>
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## ESLint — React + TypeScript {#eslintreact}
|
|
94
|
+
|
|
95
|
+
**Copy to:** `eslint.config.mjs` in the project root
|
|
96
|
+
|
|
97
|
+
For React projects. Set `settings.react.version` to the project's React version.
|
|
98
|
+
|
|
99
|
+
<CodeBlock language="js" title="eslint.config.mjs">
|
|
100
|
+
{eslintReact}
|
|
101
|
+
</CodeBlock>
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## ESLint — Next.js {#eslintnextjs}
|
|
106
|
+
|
|
107
|
+
**Copy to:** `eslint.config.mjs` in the project root
|
|
108
|
+
|
|
109
|
+
For Next.js projects. Set `settings.react.version` to the project's React version.
|
|
110
|
+
|
|
111
|
+
<CodeBlock language="js" title="eslint.config.mjs">
|
|
112
|
+
{eslintNextjs}
|
|
113
|
+
</CodeBlock>
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## ESLint — JavaScript / Node.js {#eslintbase}
|
|
118
|
+
|
|
119
|
+
**Copy to:** `eslint.config.mjs` in the project root
|
|
120
|
+
|
|
121
|
+
For plain JavaScript and Node.js projects.
|
|
122
|
+
|
|
123
|
+
<CodeBlock language="js" title="eslint.config.mjs">
|
|
124
|
+
{eslintBase}
|
|
125
|
+
</CodeBlock>
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Prettier {#prettier}
|
|
130
|
+
|
|
131
|
+
**Copy to:** `prettier.config.js` in the project root
|
|
132
|
+
|
|
133
|
+
See the [Prettier page](/Standards/prettier).
|
|
134
|
+
|
|
135
|
+
<CodeBlock language="js" title="prettier.config.js">
|
|
136
|
+
{prettier}
|
|
137
|
+
</CodeBlock>
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Stylelint — CSS and CSS Modules {#stylelintcss}
|
|
142
|
+
|
|
143
|
+
**Copy to:** `stylelint.config.mjs` in the project root
|
|
144
|
+
|
|
145
|
+
See the [Stylelint page](/Standards/stylelint).
|
|
146
|
+
|
|
147
|
+
<CodeBlock language="js" title="stylelint.config.mjs">
|
|
148
|
+
{stylelintCss}
|
|
149
|
+
</CodeBlock>
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Stylelint — SCSS {#stylelintscss}
|
|
154
|
+
|
|
155
|
+
**Copy to:** `stylelint.config.mjs` in the project root
|
|
156
|
+
|
|
157
|
+
For projects that use SCSS.
|
|
158
|
+
|
|
159
|
+
<CodeBlock language="js" title="stylelint.config.mjs">
|
|
160
|
+
{stylelintScss}
|
|
161
|
+
</CodeBlock>
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Global styles and colour palette {#globalscss}
|
|
166
|
+
|
|
167
|
+
**Copy to:** `app/globals.css`
|
|
168
|
+
|
|
169
|
+
Replace the example colours with the project's palette. See [CSS Styling](/Standards/styling).
|
|
170
|
+
|
|
171
|
+
<CodeBlock language="css" title="globals.css">
|
|
172
|
+
{globalsCss}
|
|
173
|
+
</CodeBlock>
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## EditorConfig {#editorconfig}
|
|
178
|
+
|
|
179
|
+
**Copy to:** `.editorconfig` in the project root
|
|
180
|
+
|
|
181
|
+
See the [EditorConfig page](/Standards/editorconfig).
|
|
182
|
+
|
|
183
|
+
<CodeBlock language="ini" title=".editorconfig">
|
|
184
|
+
{editorconfig}
|
|
185
|
+
</CodeBlock>
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Node version {#nvmrc}
|
|
190
|
+
|
|
191
|
+
**Copy to:** `.nvmrc` in the project root
|
|
192
|
+
|
|
193
|
+
Set it to the project's Node major version. See [direnv + nvm](/Standards/direnv).
|
|
194
|
+
|
|
195
|
+
<CodeBlock language="text" title=".nvmrc">
|
|
196
|
+
{nvmrc}
|
|
197
|
+
</CodeBlock>
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## direnv {#envrc}
|
|
202
|
+
|
|
203
|
+
**Copy to:** `.envrc` in the project root
|
|
204
|
+
|
|
205
|
+
Run `direnv allow` after adding it. See [direnv + nvm](/Standards/direnv).
|
|
206
|
+
|
|
207
|
+
<CodeBlock language="bash" title=".envrc">
|
|
208
|
+
{envrc}
|
|
209
|
+
</CodeBlock>
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Commitlint {#commitlint}
|
|
214
|
+
|
|
215
|
+
**Copy to:** `.commitlintrc.json` in the project root
|
|
216
|
+
|
|
217
|
+
See [Conventional Commits](/Standards/conventional-commits).
|
|
218
|
+
|
|
219
|
+
<CodeBlock language="json" title=".commitlintrc.json">
|
|
220
|
+
{commitlint}
|
|
221
|
+
</CodeBlock>
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Agent skills {#skills}
|
|
226
|
+
|
|
227
|
+
**Copy to:** `.agents/skills/` in the project root, and again to `.claude/commands/` so Claude Code picks them up as slash commands.
|
|
228
|
+
|
|
229
|
+
The eight standard skills. Copy all of them into every project. See [Agent Skills](/Standards/agent-skills) for how they are written.
|
|
230
|
+
|
|
231
|
+
| Skill | Invocation | Plain file |
|
|
232
|
+
| -------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
233
|
+
| [Lint](#skill-lint) | `/lint [path]` | [`/templates/skills/lint.md`](pathname:///templates/skills/lint.md) |
|
|
234
|
+
| [Lint & fix](#skill-lintfix) | `/lintFix [path]` | [`/templates/skills/lintFix.md`](pathname:///templates/skills/lintFix.md) |
|
|
235
|
+
| [Format](#skill-format) | `/format [path]` | [`/templates/skills/format.md`](pathname:///templates/skills/format.md) |
|
|
236
|
+
| [Code review](#skill-codereview) | `/codeReview [branch, commit or path]` | [`/templates/skills/codeReview.md`](pathname:///templates/skills/codeReview.md) |
|
|
237
|
+
| [Update layout](#skill-updatelayout) | `/updateLayout` | [`/templates/skills/updateLayout.md`](pathname:///templates/skills/updateLayout.md) |
|
|
238
|
+
| [Security audit](#skill-securityaudit) | `/securityAudit [path]` | [`/templates/skills/securityAudit.md`](pathname:///templates/skills/securityAudit.md) |
|
|
239
|
+
| [TypeScript](#skill-typescript) | `/typescript [path]` | [`/templates/skills/typescript.md`](pathname:///templates/skills/typescript.md) |
|
|
240
|
+
| [Test](#skill-test) | `/test [path]` | [`/templates/skills/test.md`](pathname:///templates/skills/test.md) |
|
|
241
|
+
|
|
242
|
+
### Lint {#skill-lint}
|
|
243
|
+
|
|
244
|
+
Runs ESLint (and Stylelint if configured) in check-only mode; reports all issues grouped by file.
|
|
245
|
+
|
|
246
|
+
<CodeBlock language="markdown" title="lint.md">
|
|
247
|
+
{skillLint}
|
|
248
|
+
</CodeBlock>
|
|
249
|
+
|
|
250
|
+
### Lint & fix {#skill-lintfix}
|
|
251
|
+
|
|
252
|
+
Runs ESLint and Stylelint in fix mode, then Prettier; reports what changed and what is left.
|
|
253
|
+
|
|
254
|
+
<CodeBlock language="markdown" title="lintFix.md">
|
|
255
|
+
{skillLintFix}
|
|
256
|
+
</CodeBlock>
|
|
257
|
+
|
|
258
|
+
### Format {#skill-format}
|
|
259
|
+
|
|
260
|
+
Runs Prettier in write mode; reports reformatted files.
|
|
261
|
+
|
|
262
|
+
<CodeBlock language="markdown" title="format.md">
|
|
263
|
+
{skillFormat}
|
|
264
|
+
</CodeBlock>
|
|
265
|
+
|
|
266
|
+
### Code review {#skill-codereview}
|
|
267
|
+
|
|
268
|
+
Reviews changes for correctness, security, types, tests and standards compliance. Report only.
|
|
269
|
+
|
|
270
|
+
<CodeBlock language="markdown" title="codeReview.md">
|
|
271
|
+
{skillCodeReview}
|
|
272
|
+
</CodeBlock>
|
|
273
|
+
|
|
274
|
+
### Update layout {#skill-updatelayout}
|
|
275
|
+
|
|
276
|
+
Regenerates the "Repository layout" section of `AGENTS.md` (and "Workspace packages" in monorepos).
|
|
277
|
+
|
|
278
|
+
<CodeBlock language="markdown" title="updateLayout.md">
|
|
279
|
+
{skillUpdateLayout}
|
|
280
|
+
</CodeBlock>
|
|
281
|
+
|
|
282
|
+
### Security audit {#skill-securityaudit}
|
|
283
|
+
|
|
284
|
+
Audits dependencies and code for secrets, missing access control, unvalidated input and injection. Report only.
|
|
285
|
+
|
|
286
|
+
<CodeBlock language="markdown" title="securityAudit.md">
|
|
287
|
+
{skillSecurityAudit}
|
|
288
|
+
</CodeBlock>
|
|
289
|
+
|
|
290
|
+
### TypeScript {#skill-typescript}
|
|
291
|
+
|
|
292
|
+
Tightens loose types and removes `any`, `!` and unexplained `as`.
|
|
293
|
+
|
|
294
|
+
<CodeBlock language="markdown" title="typescript.md">
|
|
295
|
+
{skillTypescript}
|
|
296
|
+
</CodeBlock>
|
|
297
|
+
|
|
298
|
+
### Test {#skill-test}
|
|
299
|
+
|
|
300
|
+
Runs the test suite; reports failures grouped by cause, tests that never ran, and files missing a test.
|
|
301
|
+
|
|
302
|
+
<CodeBlock language="markdown" title="test.md">
|
|
303
|
+
{skillTest}
|
|
304
|
+
</CodeBlock>
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## Husky commit hook {#husky}
|
|
309
|
+
|
|
310
|
+
**Copy to:** `.husky/commit-msg` in the project root
|
|
311
|
+
|
|
312
|
+
Refuses a commit whose message does not follow [Conventional Commits](/Standards/conventional-commits#enforcing-commit-messages). Plain file: [`/templates/husky/commit-msg`](pathname:///templates/husky/commit-msg)
|
|
313
|
+
|
|
314
|
+
<CodeBlock language="text" title=".husky/commit-msg">
|
|
315
|
+
{huskyHook}
|
|
316
|
+
</CodeBlock>
|
|
317
|
+
|
|
318
|
+
### Lint before commit {#husky-pre-commit}
|
|
319
|
+
|
|
320
|
+
**Copy to:** `.husky/pre-commit` in the project root
|
|
321
|
+
|
|
322
|
+
Refuses a commit while `pnpm lint` reports errors. Plain file: [`/templates/husky/pre-commit`](pathname:///templates/husky/pre-commit)
|
|
323
|
+
|
|
324
|
+
<CodeBlock language="text" title=".husky/pre-commit">
|
|
325
|
+
{huskyPreCommit}
|
|
326
|
+
</CodeBlock>
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## Docs site {#docs-site}
|
|
331
|
+
|
|
332
|
+
**Copy to:** a `docsSite/` folder in the project root
|
|
333
|
+
|
|
334
|
+
The Docusaurus viewer that shows the project's `docs/` folder at `/docs`. Copy every file, keeping the folder layout. See [Documentation](/Standards/documentation#-setting-it-up).
|
|
335
|
+
|
|
336
|
+
| File | Plain file |
|
|
337
|
+
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
338
|
+
| `package.json` | [`/templates/docsSite/package.json.txt`](pathname:///templates/docsSite/package.json.txt) — rename to `package.json` |
|
|
339
|
+
| `docusaurus.config.ts` | [`/templates/docsSite/docusaurus.config.ts`](pathname:///templates/docsSite/docusaurus.config.ts) |
|
|
340
|
+
| `sidebars.ts` | [`/templates/docsSite/sidebars.ts`](pathname:///templates/docsSite/sidebars.ts) |
|
|
341
|
+
| `tsconfig.json` | [`/templates/docsSite/tsconfig.json`](pathname:///templates/docsSite/tsconfig.json) |
|
|
342
|
+
| `pnpm-workspace.yaml` | [`/templates/docsSite/pnpm-workspace.yaml`](pathname:///templates/docsSite/pnpm-workspace.yaml) |
|
|
343
|
+
| `src/css/custom.css` | [`/templates/docsSite/src/css/custom.css`](pathname:///templates/docsSite/src/css/custom.css) |
|
|
344
|
+
| `.gitignore` | [`/templates/docsSite/gitignore.txt`](pathname:///templates/docsSite/gitignore.txt) — rename to `.gitignore` |
|
|
345
|
+
| `src/pages/index.tsx` | [`/templates/docsSite/src/pages/index.tsx`](pathname:///templates/docsSite/src/pages/index.tsx) |
|
|
346
|
+
| `static/images/logo.svg` | [`/templates/docsSite/static/images/logo.svg`](pathname:///templates/docsSite/static/images/logo.svg) — replace with the project logo |
|
|
347
|
+
|
|
348
|
+
Set `PROJECT_NAME` at the top of the config:
|
|
349
|
+
|
|
350
|
+
<CodeBlock language="ts" title="docusaurus.config.ts">
|
|
351
|
+
{docsSiteConfig}
|
|
352
|
+
</CodeBlock>
|
|
353
|
+
|
|
354
|
+
<CodeBlock language="json" title="package.json">
|
|
355
|
+
{docsSitePackage}
|
|
356
|
+
</CodeBlock>
|
|
357
|
+
|
|
358
|
+
<CodeBlock language="ts" title="sidebars.ts">
|
|
359
|
+
{docsSiteSidebars}
|
|
360
|
+
</CodeBlock>
|
|
361
|
+
|
|
362
|
+
<CodeBlock language="json" title="tsconfig.json">
|
|
363
|
+
{docsSiteTsconfig}
|
|
364
|
+
</CodeBlock>
|
|
365
|
+
|
|
366
|
+
<CodeBlock language="yaml" title="pnpm-workspace.yaml">
|
|
367
|
+
{docsSiteWorkspace}
|
|
368
|
+
</CodeBlock>
|
|
369
|
+
|
|
370
|
+
<CodeBlock language="css" title="src/css/custom.css">
|
|
371
|
+
{docsSiteCss}
|
|
372
|
+
</CodeBlock>
|
|
373
|
+
|
|
374
|
+
<CodeBlock language="text" title=".gitignore">
|
|
375
|
+
{docsSiteGitignore}
|
|
376
|
+
</CodeBlock>
|
|
377
|
+
|
|
378
|
+
The home page sends `/docs` to the first Overview doc. Change the path if the overview file is renamed:
|
|
379
|
+
|
|
380
|
+
<CodeBlock language="tsx" title="src/pages/index.tsx">
|
|
381
|
+
{docsSiteHome}
|
|
382
|
+
</CodeBlock>
|
|
383
|
+
|
|
384
|
+
### The `/docs` route {#docs-route}
|
|
385
|
+
|
|
386
|
+
**Copy to:** `next.config.mjs` in the project root. If the project already has a Next.js config, add the `rewrites` function to it.
|
|
387
|
+
|
|
388
|
+
Plain file: [`/templates/next.config.mjs`](pathname:///templates/next.config.mjs)
|
|
389
|
+
|
|
390
|
+
<CodeBlock language="js" title="next.config.mjs">
|
|
391
|
+
{nextConfig}
|
|
392
|
+
</CodeBlock>
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## Document templates {#document-templates}
|
|
397
|
+
|
|
398
|
+
**Copy to:** the `docs/` folder in the project root, keeping the folder layout
|
|
399
|
+
|
|
400
|
+
The full set of Decision Docs for a new project: every [reusable folder](/Standards/documentation#-the-folders) with every standard file, each marked `Status: Not started`. Copy the whole [`static/templates/docs/`](https://github.com/activatus-life/code-standards/tree/main/static/templates/docs) folder from this repository.
|
|
401
|
+
|
|
402
|
+
| Folder | Example file |
|
|
403
|
+
| --------------- | --------------------------------------------------------------------------------------------- |
|
|
404
|
+
| `overview/` | [`/templates/docs/overview/what-is-it.md`](pathname:///templates/docs/overview/what-is-it.md) |
|
|
405
|
+
| `architecture/` | [`/templates/docs/architecture/system.md`](pathname:///templates/docs/architecture/system.md) |
|
|
406
|
+
| `scope/` | [`/templates/docs/scope/core.md`](pathname:///templates/docs/scope/core.md) |
|
|
407
|
+
| …and 13 more | Each file is served at `/templates/docs/<folder>/<file>.md` |
|
|
408
|
+
|
|
409
|
+
After copying, rename `overview/what-is-it.md` after the project and update its title.
|
|
410
|
+
|
|
411
|
+
### Decision Doc format {#doc-format}
|
|
412
|
+
|
|
413
|
+
**Copy to:** any new doc that has no template file
|
|
414
|
+
|
|
415
|
+
The shape every doc follows. See [The doc format](/Standards/documentation#-the-doc-format). Plain file: [`/templates/decision-doc.md`](pathname:///templates/decision-doc.md)
|
|
416
|
+
|
|
417
|
+
<CodeBlock language="markdown" title="decision-doc.md">
|
|
418
|
+
{decisionDoc}
|
|
419
|
+
</CodeBlock>
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 1.6
|
|
3
|
+
sidebar_label: "Version History"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Version History
|
|
7
|
+
|
|
8
|
+
> What changed in each version of the standards, and exactly what a project has to do about it. Written for the AI agent doing the update.
|
|
9
|
+
|
|
10
|
+
**Every change to the standards gets a new version number.** Each project records the version it follows in its `AGENTS.md`, under "Code standards":
|
|
11
|
+
|
|
12
|
+
```md
|
|
13
|
+
**Code standards version:** 2
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Updating a project to a new version
|
|
17
|
+
|
|
18
|
+
**Read only the versions newer than the project's.** A project on version 1 that is updating to version 3 reads version 2 and version 3 on this page, and nothing else. Do not re-read every standard or check the whole codebase: each version lists every change that matters, and how to find the code it affects.
|
|
19
|
+
|
|
20
|
+
1. **Find the project's version** in its `AGENTS.md`. If there is none, the project has never followed the standards: follow [Setup](/Guides/setup) instead.
|
|
21
|
+
2. **Update the package:** `pnpm update @activatus/code-standards --latest`. Then read this page from `node_modules/@activatus/code-standards/docs/version-history.md`.
|
|
22
|
+
3. **Read each version newer than the project's**, oldest first. Skip any change to a standard the project opted out of: they are listed in `docs/development/coding-standards.md`.
|
|
23
|
+
4. **For each change, do the "What to do" steps**, then run the "How to check" searches. A search that still finds something means the change is not finished.
|
|
24
|
+
5. **One pull request per kind of change** (for example, all the folder renames together), so each one stays easy to review. Follow the project's commit rule in `AGENTS.md`.
|
|
25
|
+
6. **Run `pnpm lint`, `pnpm test` and the build** after each change.
|
|
26
|
+
7. **Update the version number** in `AGENTS.md` once every change is done.
|
|
27
|
+
|
|
28
|
+
**When a change does not fit the project**, for example it renames a folder the project does not have, skip it. If you are not sure, ask; do not guess.
|
|
29
|
+
|
|
30
|
+
## Adding a version
|
|
31
|
+
|
|
32
|
+
Anyone changing the standards adds a version, in the same pull request as the change:
|
|
33
|
+
|
|
34
|
+
- **One version per change that reaches `main`**, numbered one higher than the last. Whole numbers only.
|
|
35
|
+
- **Bump the package's major version to match** in `package.json`: version 3 is `3.0.0`. Then publish it to npm (npmjs.com) with `pnpm publish`. pnpm is the tool; npm is where the package lives, and projects install it from there with `pnpm add`.
|
|
36
|
+
- **For every change, write:** what changed, why, what to do in a project, and how to check it is done. Write it for an agent that has not read the rest of the standards.
|
|
37
|
+
- **If a project has nothing to do, say so.**
|
|
38
|
+
- **Newest version at the top.**
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Version 2
|
|
43
|
+
|
|
44
|
+
**Released:** 2026-10-15 · **Updates from:** version 1
|
|
45
|
+
|
|
46
|
+
### 1. The standards are an npm package — do this first
|
|
47
|
+
|
|
48
|
+
**Why:** A project installs the standards, so an agent reads the exact version the project uses, straight from `node_modules`. The package version is the standards version: `2.0.0` is version 2.
|
|
49
|
+
|
|
50
|
+
**What to do:**
|
|
51
|
+
|
|
52
|
+
- `pnpm add -D @activatus/code-standards`
|
|
53
|
+
- Read the rest of this update from `node_modules/@activatus/code-standards/docs/version-history.md`. The templates to copy are in `node_modules/@activatus/code-standards/static/templates/`.
|
|
54
|
+
- In `AGENTS.md`, under "Code standards", say the standards are installed as `@activatus/code-standards`, and that agents read them from `node_modules/@activatus/code-standards/docs/`. Copy the wording from the [`AGENTS.md` template](/templates#agents).
|
|
55
|
+
|
|
56
|
+
**How to check:** `@activatus/code-standards` is in the project's `devDependencies`.
|
|
57
|
+
|
|
58
|
+
### 2. The person agrees which standards apply — do this second
|
|
59
|
+
|
|
60
|
+
**Why:** Not every standard suits every project. The person now picks, from a numbered list, and the choices are written down so every agent follows the same ones.
|
|
61
|
+
|
|
62
|
+
**What to do:**
|
|
63
|
+
|
|
64
|
+
- Print the numbered list in [Setup, step 3](/Guides/setup#3-agree-the-standards) to the person, exactly as written, and record their answer in `docs/development/coding-standards.md`.
|
|
65
|
+
- For the rest of this update, **skip any change to a standard the person opted out of.**
|
|
66
|
+
|
|
67
|
+
**How to check:** `docs/development/coding-standards.md` lists the opted-out standards by number, or says "No differences".
|
|
68
|
+
|
|
69
|
+
### 3. `docs` is a dictionary word: the docs folder is `docs/` again
|
|
70
|
+
|
|
71
|
+
**Why:** `docs` is a word, not an abbreviation, and `documentation` is long and hard to read in names.
|
|
72
|
+
|
|
73
|
+
**What to do:**
|
|
74
|
+
|
|
75
|
+
- Rename the folders with `git mv`: `documentation/` → `docs/`, `documentationSite/` → `docsSite/`.
|
|
76
|
+
- Rename `docs/overview/writing-documentation.md` → `docs/overview/writing-docs.md`, and fix every link to it.
|
|
77
|
+
- Rename the environment variable `DOCUMENTATION_URL` → `DOCS_URL` in `next.config.mjs`, `.env.local`, `.env.example` and the hosting provider's settings.
|
|
78
|
+
- Rename the route `/documentation` → `/docs`. Copy the new rewrite from the [`next.config.mjs` template](/templates#docs-route).
|
|
79
|
+
- In `docsSite/docusaurus.config.ts`, set `baseUrl: '/docs/'` and `path: '../docs'`. Copy the [`docsSite/` template](/templates#docs-site) if unsure.
|
|
80
|
+
- Rename the scripts in `package.json`: `documentation:install` → `docs:install`, `documentation:dev` → `docs:dev`, `documentation:build` → `docs:build`.
|
|
81
|
+
- Update every mention in `AGENTS.md`, `README.md` and the docs themselves.
|
|
82
|
+
|
|
83
|
+
**How to check:** `grep -rn "documentation/\|documentationSite\|DOCUMENTATION_URL\|documentation:" --exclude-dir=node_modules .` finds nothing. Normal sentences that say "documentation" are fine.
|
|
84
|
+
|
|
85
|
+
### 4. `props` is a dictionary word: prop types end in `Props`
|
|
86
|
+
|
|
87
|
+
**Why:** `props` is the word every React developer uses. `properties` is harder to read.
|
|
88
|
+
|
|
89
|
+
**What to do:**
|
|
90
|
+
|
|
91
|
+
- Rename every type ending in `Properties` to end in `Props`: `ButtonProperties` → `ButtonProps`. Use the editor's Rename Symbol (F2), not find-and-replace.
|
|
92
|
+
- Rename variables and parameters called `properties` to `props`, including spreads: `...buttonProperties` → `...buttonProps`.
|
|
93
|
+
- Copy the new [ESLint config](/Standards/eslint). Two things changed in it:
|
|
94
|
+
- The type-name rule is now `(Props|Type)$`.
|
|
95
|
+
- `unicorn/name-replacements` now has `replacements: { docs: false, props: false, utils: false }`.
|
|
96
|
+
|
|
97
|
+
**How to check:** `grep -rn "Properties\b" --include=*.ts --include=*.tsx --exclude-dir=node_modules .` finds nothing of ours, and `pnpm lint` passes.
|
|
98
|
+
|
|
99
|
+
### 5. `utils` is a dictionary word: reusable functions live in `utils/`
|
|
100
|
+
|
|
101
|
+
**Why:** `utils` is the word developers use. `utilities` and `helpers` are not.
|
|
102
|
+
|
|
103
|
+
**What to do:**
|
|
104
|
+
|
|
105
|
+
- Rename every `utilities/` folder to `utils/` with `git mv`, at every level: global, section and component.
|
|
106
|
+
- Rename any `helpers/` folder to `utils/`. Split a `helpers.ts` grab-bag file into one folder per function.
|
|
107
|
+
- Fix the imports: `@/utilities` → `@/utils`, `./utilities` → `./utils`.
|
|
108
|
+
|
|
109
|
+
**How to check:** `find . -type d \( -name utilities -o -name helpers \) -not -path "*/node_modules/*"` finds nothing, and `grep -rn "utilities\"" --exclude-dir=node_modules .` finds no imports.
|
|
110
|
+
|
|
111
|
+
### 6. Components live where they are used: no feature folders
|
|
112
|
+
|
|
113
|
+
**Why:** Grouping by feature and grouping by page meant two places for the same component. Now there is one rule. See [Where components live](/Structure/folder-structure#-where-components-live).
|
|
114
|
+
|
|
115
|
+
| Used by | Lives in |
|
|
116
|
+
| -------------------------------------------------------- | --------------------------- |
|
|
117
|
+
| Every project the same way: the Design System Components | `components/ui/` |
|
|
118
|
+
| More than one page of this project | `components/shared/` |
|
|
119
|
+
| A few pages in one section | `app/(section)/components/` |
|
|
120
|
+
| One page only | `app/page-name/components/` |
|
|
121
|
+
|
|
122
|
+
**What to do:**
|
|
123
|
+
|
|
124
|
+
- For each component in `components/features/` or `components/layout/`, find where it is imported (`grep -rn "ComponentName"`).
|
|
125
|
+
- Imported by one page → move it to that page's `components/` folder.
|
|
126
|
+
- Imported by pages in one section → move it to that section's route group: `app/(section)/components/`.
|
|
127
|
+
- Imported by pages in more than one section → move it to `components/shared/`.
|
|
128
|
+
- Move a feature's `utils/` folder the same way, to wherever its functions are used.
|
|
129
|
+
- Delete the empty `components/features/` and `components/layout/` folders.
|
|
130
|
+
- Leave `components/ui/` as it is.
|
|
131
|
+
|
|
132
|
+
**How to check:** `components/features/` and `components/layout/` do not exist, and the build passes.
|
|
133
|
+
|
|
134
|
+
### 7. The Component Reference is now Design System Components
|
|
135
|
+
|
|
136
|
+
**Why:** It is the list of standard components every project builds the same way, and "design system components" is what people call that.
|
|
137
|
+
|
|
138
|
+
**What to do:** In `AGENTS.md` and the project's docs, change "Component Reference" to "Design System Components", and change links from `/template-components` to `/design-system-components`.
|
|
139
|
+
|
|
140
|
+
**How to check:** `grep -rn "Component Reference\|template-components" --exclude-dir=node_modules .` finds nothing.
|
|
141
|
+
|
|
142
|
+
### 8. The Dictionary: short names that are words
|
|
143
|
+
|
|
144
|
+
**Why:** Some short names are words, not abbreviations. The [Dictionary](/Standards/human-readable-names#dictionary) is the one list of them, so nobody has to guess.
|
|
145
|
+
|
|
146
|
+
**What to do:**
|
|
147
|
+
|
|
148
|
+
- The Dictionary has: `id`, `docs`, `props`, `utils`, `app`, `url`, `api`, `uat`, `pdf`, `html`, `css`, `json`, `readme`.
|
|
149
|
+
- Any other short name in the project's own code is written out in full. If one seems like a word, ask for it to be added to the Dictionary; do not just use it.
|
|
150
|
+
- Copy the new "Dictionary words stay short" bullet into `AGENTS.md` from the [template](/templates#agents).
|
|
151
|
+
|
|
152
|
+
**How to check:** `pnpm lint` passes with the new ESLint config.
|
|
153
|
+
|
|
154
|
+
### 9. Third-party names are used as they are
|
|
155
|
+
|
|
156
|
+
**Why:** The naming rule is only for names we write. Names from someone else's code keep their own names: everyone knows them by those names, and renaming them breaks the code.
|
|
157
|
+
|
|
158
|
+
**What to do:**
|
|
159
|
+
|
|
160
|
+
- Undo any rename of a third-party name. The common one is shadcn/ui's `cn` function: it stays `cn`.
|
|
161
|
+
- In our own code, give the value a full-word name as soon as it arrives: `const workingDirectory = process.cwd();`, then `{ cwd: workingDirectory }`.
|
|
162
|
+
|
|
163
|
+
**How to check:** Nothing to search for. Review any renamed import from a package.
|
|
164
|
+
|
|
165
|
+
### 10. The ontology only holds code words
|
|
166
|
+
|
|
167
|
+
**Why:** The code standards define words about writing code. Each project defines the words for what it builds.
|
|
168
|
+
|
|
169
|
+
**What to do:**
|
|
170
|
+
|
|
171
|
+
- Keep the project's product words in `docs/product/ontology.md`.
|
|
172
|
+
- Check every word in it against the [Ontology](/ontology). If the project gives a code word a different meaning, remove that entry and use the code standards' meaning. Tell a person what changed.
|
|
173
|
+
- Make the project's ontology say that it adds to the code standards' ontology.
|
|
174
|
+
- Update the "Ontology" section of `AGENTS.md` from the [template](/templates#agents). It now points to both ontologies.
|
|
175
|
+
|
|
176
|
+
**How to check:** No term in `docs/product/ontology.md` is also defined in the code standards' [Ontology](/ontology).
|
|
177
|
+
|
|
178
|
+
### 11. Whether agents may commit is the project's choice
|
|
179
|
+
|
|
180
|
+
**Why:** Strict no commit is right for most projects, but a tool built to ship code with AI, such as Launchpad, needs agents to commit.
|
|
181
|
+
|
|
182
|
+
**What to do:** This is standard 22 in the list from change 2. If the person kept it, keep the template's "NEVER COMMIT CODE" lines for strict no commit. Otherwise, replace them with the project's own rule, saying exactly which agents may commit, push and open Pull Requests, and when. See [A project can choose otherwise](/Standards/agent-specs#a-project-can-choose-otherwise).
|
|
183
|
+
|
|
184
|
+
**How to check:** The top of `AGENTS.md` states the project's commit rule.
|
|
185
|
+
|
|
186
|
+
### 12. The live standards site
|
|
187
|
+
|
|
188
|
+
**Why:** The standards now have a real address: https://activatus-code-standards.vercel.app
|
|
189
|
+
|
|
190
|
+
**What to do:** Replace `[code standards site URL]` in `AGENTS.md` and `docs/development/coding-standards.md` with https://activatus-code-standards.vercel.app
|
|
191
|
+
|
|
192
|
+
**How to check:** `grep -rn "code standards site URL" .` finds nothing.
|
|
193
|
+
|
|
194
|
+
### 13. This Version History
|
|
195
|
+
|
|
196
|
+
**What to do:** Add `**Code standards version:** 2` to `AGENTS.md`, under "Code standards".
|
|
197
|
+
|
|
198
|
+
### No action needed
|
|
199
|
+
|
|
200
|
+
- The [Setup](/Guides/setup) guide is written for the agent: install the package, check the version, agree the standards, apply them. It never asks which framework the project uses, and never creates the app: the person does that.
|
|
201
|
+
- The [migration guide](/Guides/migrating#stage-4--names) has a Names stage.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Version 1
|
|
206
|
+
|
|
207
|
+
**Released:** 2026-10-15
|
|
208
|
+
|
|
209
|
+
The first numbered version: everything in the standards on this date. It included `documentation/` for the docs folder, `Properties` at the end of prop types, `utilities/` for reusable functions, `components/features/`, and the Component Reference. Version 2 replaced all five.
|
|
210
|
+
|
|
211
|
+
**What to do in a project:** follow the [migration guide](/Guides/migrating) for everything.
|