Skip to content

Doc d9#240

Merged
Grouzoul merged 28 commits intomainfrom
doc-d9
Mar 17, 2026
Merged

Doc d9#240
Grouzoul merged 28 commits intomainfrom
doc-d9

Conversation

@Grouzoul
Copy link
Copy Markdown
Contributor

Change description

What's included

  • Rebrand — All user-facing strings, logos, page titles, meta tags, and email templates updated from "Directus" to
    "d9". Code identifiers (@directus/, directus_*, DIRECTUS_*) are intentionally preserved for backward
    compatibility.
  • Logos — New d9 logos (dark/light/favicon) across app and docs. Fixed inverted dark/light logo swap in the login
    view.
  • Docs — Fixed 414 broken internal links across 58 files. Replaced dead d9.dev / docs.d9.dev URLs with GitHub
    links. Removed unused EXAMPLE/LDAP URLs from VitePress constants. Replaced outdated user directory screenshot.
  • Docker — Production-ready docker-compose.yml (Postgres + Redis + d9) and docker-entrypoint.sh with
    bootstrap, migration fix, and branding.
  • CLAUDE.md — AI agent guidance for contributors, pointing to the
    d9-skills plugin for skill-based contributions.
  • Cleanup — Removed SkillOps pipeline files (skills, hooks, commands, scripts, CI workflow, PR template) — all
    moved to the standalone d9-skills plugin.

Stats

  • 335 files changed, 1 816 insertions, 2 168 deletions
  • 16 commits

Type of change

  • Bug fix (fixes an issue)
  • New feature (adds functionality)

Related issues

Rebrand Directus 9 → d9 for independent fork launch

Checklists

Development

  • Lint rules pass locally
  • Application changes have been tested thoroughly
  • Automated tests covering modified code pass

Security

  • Security impact of change has been considered
  • Code follows company security practices and guidelines

Network

  • Changes to network configurations have been reviewed
  • Any newly exposed public endpoints or data have gone through security review

Code review

  • Pull request has a descriptive title and context useful to a reviewer. Screenshots or screencasts are attached
    as necessary
  • reviewers assigned
  • Pull request linked to task tracker where applicable

Grouzoul and others added 17 commits March 4, 2026 16:07
Complete rebrand across 150+ files:
- All prose "Directus" -> "d9" in docs (123 markdown files)
- Preserved code identifiers (@directus/, directus_*, DIRECTUS_*)
- Replaced all logos and favicons (docs + app) with d9 branding
- Updated VitePress config: title, nav, removed tracking scripts
- Updated constants: URLs, emails -> support@webcapsule.io
- Console branding: logo, emojis, startup messages
- Rewrote key pages: introduction, quickstart, architecture
- Localized CDN images to docs/public/images/
- Updated code_of_conduct, contributing, security, readme

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SkillOps: a community-driven skill contribution pipeline.

Structure:
- .claude/skills/d9/ — 7 experience skills from real d9 sessions
  (rebuild-plugins, preserve-identifiers, node-v24-windows,
   vitepress-logo, cdn-migration, ses-setup, fork-setup)
- .claude/skills/skillops/ — 5 portable meta-skills (detect-xp,
  match-existing, anonymize-session, format-skill, curate-skills)
  Reusable in any project — not tied to d9.

Pipeline: detect pattern → compare with existing skills →
anonymize locally → format as SKILL.md or AMENDMENT.yaml →
PR with auto-generated ASCII fiche comment → review → merge.

Infrastructure:
- GitHub Action: curate-on-pr.yml (auto-comment on skill PRs)
- PR template for skill contributions
- generate-skill-pr-comment.js (ASCII fiche generator, tested)
- .skills.json manifest with portable: true on skillops

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Points Claude Code to the d9 experience skills and the
SkillOps contribution pipeline. Skills are loaded on demand
when relevant to the current task.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…n tooling

- Add refine-skill-design (ASQM quality gate) and discover-skills (cross-repo search)
- Rewrite detect-xp v2.0 with 3-tier trigger system and active monitoring mandate
- Enhance anonymize-session with decontextualization step (inspired by ai-cortex)
- Add verify-skill-structure.mjs and verify-registry.mjs validation scripts
- Add schemas/skill-metadata.json for frontmatter validation
- Update CLAUDE.md with explicit detect-xp monitoring instructions
- Update INDEX.md and .skills.json with new skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New skills captured via SkillOps pipeline:
- crlf-docker-entrypoint: prevent CRLF failures in Docker containers
- d9-key-secret-env: ensure KEY/SECRET env vars are set and distinct
- d9-migration-session-tracking: fix silent session_id migration failure
- pnpm-ci-true-docker: set CI=true to avoid pnpm TTY prompts
- pnpm-deploy-require-path: fix transitive dep resolution with pnpm deploy

All 5 skills have complete ASQM structure (Triggers, Behavior, Restrictions, Self-Check, Examples).
Registry and INDEX.md updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Closes the gap in the SkillOps pipeline between format-skill (files on disk)
and curate-skills (CI on PR). Orchestrates existing tooling:
- generate-skill-pr-comment.js for ASCII review in PR body
- skill-contribution.md PR template
- verify-skill-structure.mjs for pre-submit validation

Pipeline is now: detect-xp → match → anonymize → format → refine → submit → curate (CI)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SessionStart hook (startup + compact): injects compact briefing with all
  skill triggers into agent context at every session start and after compaction
- Stop hook: reminds agent to check for detect-xp patterns after every response
- Briefing extracts triggers from SKILL.md using awk (skips code blocks)

This ensures the agent always knows about the pipeline and actively monitors
for capturable patterns, solving the "detect-xp never triggers" problem.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
UI: d9 sprite animation, favicon, login page branding, tab title
Docker: one-command setup with PostgreSQL + Redis, healthcheck, entrypoint with migration fix
Settings: d9 defaults for project name, color (#00C897), contact email

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enables any user who forks the repo to run the full SkillOps pipeline
(detect → match → anonymize → format → quality check → submit PR)
via a single /skillops command in Claude Code.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- submit-skill v2: create PR from origin/main (not working branch)
  to prevent leaking private work, configs, or secrets
- Add session_tokens field to skill frontmatter + Token Economy in PR body
- /skillops command: add token collection step + clean branch instructions
- Fix hooks: quote $CLAUDE_PROJECT_DIR for paths with spaces
- session-briefing: add "Contribute" section mentioning /skillops
- CLAUDE.md: add Contributing section explaining /skillops workflow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
git stash cannot handle untracked (new) files like freshly created
SKILL.md. Replace stash-based flow with filesystem copy to temp dir:
1. cp skill files to mktemp -d (or %TEMP% on Windows)
2. Remove new files from working tree
3. git checkout -b skill/... origin/main
4. Restore from temp, commit, push, PR
5. Return to working branch, clean up temp

Cross-platform: includes Windows equivalents for all commands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remap /configuration/* → /app/*, /concepts/* → actual locations,
/cookbook/* → /guides/*, and remove dead image/page links.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace logo-light.svg, logo-dark.svg, safari-pinned-tab.svg with retouched versions
- Add logo-readme.svg and logo-readme-light.svg for GitHub dark/light mode
- Fix README: use local paths with <picture> element instead of broken docs-d9 branch URL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Skills now live in LaWebcapsule/d9-skills (separate repo, plugin pattern)
- format-skill produces Agent Skills Open Standard format (name + description required, rest in metadata)
- submit-skill v3: clones d9-skills to temp, creates branch, copies skills, opens PR on external repo
- match-existing: reads skills from d9-skills repo (remote or local)
- CLAUDE.md: points to plugin repo for skill installation
- verify-skill-structure + schema: only name + description required (standard compliance)

Install skills: npx skills add LaWebcapsule/d9-skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All skills, pipeline, hooks, commands, scripts, and schemas have been
moved to the LaWebcapsule/d9-skills plugin repo (PR #2).

CLAUDE.md now points to d9-skills for installation:
  claude --plugin-dir ./d9-skills

Removed:
- .claude/skills/ (12 operational + 8 pipeline skills)
- .claude/commands/skillops.md
- .claude/hooks/ (session-briefing, detect-xp-reminder)
- .claude/settings.json (hooks config)
- scripts/ (verify-skill-structure, verify-registry, generate-skill-pr-comment)
- schemas/skill-metadata.json
- .skills.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove SkillOps PR template and CI workflow relics
- Remove d9-skills/ from .gitignore (no longer needed)
- Fix homepage URL, env-stub email, contributing wording
- Swap inverted app logos (dark ↔ light)
- Replace docs logo and user directory screenshot
- Remove dead EXAMPLE/LDAP URLs from vitepress constants
- Point all doc links to GitHub (no more d9.dev/docs.d9.dev)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@louisdussarps louisdussarps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quelques remarques avec ce qui ressemble à des coquilles à droite à gauche.
Il y a aussi un problème dans la sidebar de la doc :

Image

vs dans directus, on avait toute la largueur d'occupée, ce qui rendait mieux

Image

<p>&nbsp;</p>

<a href="https://directus.io" target="_blank" rel="noopener noreferrer"><img width="250" alt="Logo" src="https://user-images.githubusercontent.com/9141017/88821768-0dc99800-d191-11ea-8c66-09c55ab451a2.png"></a>
<a href="https://d9.dev" target="_blank" rel="noopener noreferrer"><img width="250" alt="d9 Logo" src="https://raw.githubusercontent.com/LaWebcapsule/directus9/docs-d9/docs/public/logo-light.svg"></a>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

c'est la bonne url ? Seul endroit où on trouve d9.dev j'ai l'impression

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai essayé de l'enlever partout, y'a eu des oublis
Je corrige :)

TRUSTRADIUS: 'https://www.trustradius.com/products/directus/reviews',
PRODUCTHUNT: 'https://www.producthunt.com/posts/directus-9',
NPM: 'https://www.npmjs.com/package/@wbce-d9/directus9',
DOCKER_HUB: 'https://github.com/LaWebcapsule/directus9/pkgs/container/directus9',
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je pense qu'on publie d'image docker

description: Directus Docs
url: 'https://docs.directus.io'
description: d9 Docs
url: 'https://docs.d9.dev'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

deuxième mention de d9.dev

environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: directus
d9:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

c'est pas le but de ce docker-compose que d'y introduire d9. Il fonctionne pour lancer différentes bases de données, et pour le coup il fonctionnait bien jusque là.
A mon avis, pas la bonne PR pour le modifier

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je vais enlever toutes les modfis relatives au docker et je ferai une branche à côté où je commencerai à bosser dessus. T'as raison que ca sera plus facilement lisible et traçable. 2 PR différentes pour deux sujets différents.

@@ -0,0 +1,33 @@
#!/bin/sh
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Directus a déjà un entrypoint avec sa cli. ça complexifie inutilement et n'est pas lié à une modif de la doc

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pas trop fan des modifs introduites - notamment d'utiliser postgres au lieu de psql par défaut.
Comme plus haut, pense que c'est pas la bonne PR pour ces modifs

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, similaire à ce que j'ai dit plus tôt. Je ferai une autre PR pour ca.

readme.md Outdated

## 🐰 Introduction
**d9** is an open-source fork of [Directus 9](https://github.com/directus/directus) (GPLv3), maintained independently by [La Webcapsule](https://github.com/LaWebcapsule). While Directus 10+ moved to a premium licensing model, d9 preserves a fully open-source data platform with a focus on **performance** and **European regulatory compliance**.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pas vraiment ce qu'on a fait jusque là

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est à dire ? On a plus mis l'accent sur performance et compliance non ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non on a juste fait des fixes de sécu.
Mais :

  • on n'a pas amélioré les performances (on a jamais fait les modifs de cache auxquelles on songeait)
  • on n'a pas amélioré la compliance (par exemple, pas de champ "sensible" intégré à directus, pas d'export d'un document de compliance)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

perso, l'ancienne présentation m'allait bien

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remis l'ancienne version

<p>&nbsp;</p>

<a href="https://directus.io" target="_blank" rel="noopener noreferrer"><img width="250" alt="Logo" src="https://user-images.githubusercontent.com/9141017/88821768-0dc99800-d191-11ea-8c66-09c55ab451a2.png"></a>
<a href="https://d9.dev" target="_blank" rel="noopener noreferrer"><img width="250" alt="d9 Logo" src="https://raw.githubusercontent.com/LaWebcapsule/directus9/docs-d9/docs/public/logo-light.svg"></a>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ça semble pas la bonne url

## File

![A file type form input where user can pick from three options: "Upload File From Device", "Choose Files from Library", "Import File from URL"]({{CDN_URL}}/docs/v9/configuration/data-model/fields/interfaces-20230308/interface-file.webp)
!A file type form input where user can pick from three options: "Upload File From Device", "Choose Files from Library", "Import File from URL"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

syntaxe qui a des conséquences bizarres dans la doc :

Image

## Image

![A file type form input where user can pick from three options: "Upload File From Device", "Choose Files from Library", "Import File from URL"]({{CDN_URL}}/docs/v9/configuration/data-model/fields/interfaces-20230308/interface-image.webp)
!A file type form input where user can pick from three options: "Upload File From Device", "Choose Files from Library", "Import File from URL"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

y en a pas mal des syntaxes comme ça ; faudrait ou les supprimer totalement ou les valoriser différemment (c'était des anciennes légendes d'image)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je vais les supprimer

Copy link
Copy Markdown
Contributor Author

@Grouzoul Grouzoul Mar 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En fait il faut pas les supprimer, c'est les liens vers toutes les images que j'ai ajouté justement.
C'est claude qui a refait une passe dessus quand j'ai fait une nouvelle branche... Et qui a tout supprimé.
Je les remets

Grouzoul and others added 8 commits March 12, 2026 18:47
- Remap 152 broken CDN image references to local /images/ paths
- Fix d9.dev URLs → GitHub tree/main/docs
- Fix directus/readme.md broken logo → local picture element
- Update sidebar logos with d9-docs branding
- Revert Dockerfile, docker-compose.yml to main (Docker → docker-setup branch)
- Remove docker-entrypoint.sh, DOCKER.md (moved to docker-setup branch)
- Fix duplicate image in selection.md, orphan <p> tags in user-directory.md
- Add MISSING-IMAGES.md: inventory of unused images

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The rebrand commit accidentally replaced this blackbox test asset,
causing 4 SQLite test failures (assets/read + files/storage).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Covers d9-related, d9.dev, etc.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the sprite-based loading animation with a single SVG logo
that rotates on itself. Simpler and more reliable across browsers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Grouzoul Grouzoul merged commit 5a896e5 into main Mar 17, 2026
6 checks passed
louisdussarps pushed a commit that referenced this pull request Mar 23, 2026
* Rebrand Directus 9 -> d9: docs, app, logos, config

Complete rebrand across 150+ files:
- All prose "Directus" -> "d9" in docs (123 markdown files)
- Preserved code identifiers (@directus/, directus_*, DIRECTUS_*)
- Replaced all logos and favicons (docs + app) with d9 branding
- Updated VitePress config: title, nav, removed tracking scripts
- Updated constants: URLs, emails -> support@webcapsule.io
- Console branding: logo, emojis, startup messages
- Rewrote key pages: introduction, quickstart, architecture
- Localized CDN images to docs/public/images/
- Updated code_of_conduct, contributing, security, readme

Signed-off-by: louis <louis@webcapsule.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants