By linagora
Linagora Twake coding guidelines as Claude Code skills — React, JavaScript, Cozy Client, Java, Go, Git conventions
Use when reading, writing, or designing data access against a Cozy stack from a Twake/Cozy React app — anything touching cozy-client, doctypes, Q(), client.query, useQuery, or client.collection. Forbids direct collection access that bypasses the redux store and offline cache, enforces Q() definitions through client.query/useQuery, mandates a centralized queries module, query alias naming per cozy-guidelines, an explicit fetchPolicy on every query, and the canonical where/partialIndex/indexFields/sortBy/limitBy pattern with the `{ $gt: null }` sentinel for sortBy fields.
Use when debugging, adding features to, or testing changes inside any cozy-* or twake-* library consumed by a Twake/Cozy React frontend app. Forbids hand-editing files under node_modules; directs to the linagora/cozy-libs monorepo and to yarn link or rlink for local testing.
Use when writing, reviewing, or refactoring frontend tests in Twake/Cozy React projects. Enforces @testing-library/react (never Enzyme or TestCafe), data-testid attributes, queryBy + toBeInDocument()/toBe(null) patterns, colocated *.spec files (no __tests__ folders), and bans snapshot tests.
Use when writing commit messages, creating branches, or opening pull requests on Linagora/Twake/Cozy projects. Enforces Conventional Commits, one subject per commit (atomic commits), a structured PR workflow (branch, commit, push, gh pr create), lowercase PR titles under 70 chars, and Summary-only PR bodies with no invented motivation and no em dashes.
Use when writing or reviewing JavaScript/TypeScript in Twake/Cozy projects. Enforces async/await over Promise chains, null over undefined, error handling contract (null / typed result / throw), function declaration style, strict equality, date handling via Intl/date-fns (never moment.js), AppLinker for redirections (never window.location), and business-logic-only comments.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Linagora Twake / Cozy coding guidelines, packaged for AI coding agents. Install once per project and your agent automatically follows Twake conventions.
Works with:
AGENTS.md / opencode.json mechanism.Other agents that honor AGENTS.md (Codex CLI and similar) can also point at the AGENTS.md file at the root of this repo.
Inside any Twake / Linagora project, from the Claude Code prompt:
/plugin marketplace add linagora/twake-guidelines
/plugin install twake-guidelines@twake-guidelines
/plugin list
Claude will auto-trigger the relevant skill based on what you are working on (a React file triggers twake-react-conventions, a commit triggers twake-git-conventions, and so on). No manual activation needed.
Update / uninstall:
/plugin update twake-guidelines@twake-guidelines
/plugin uninstall twake-guidelines@twake-guidelines
Add an opencode.json to your project root:
{
"$schema": "https://opencode.ai/config.json",
"instructions": [
"https://raw.githubusercontent.com/linagora/twake-guidelines/main/AGENTS.md"
]
}
OpenCode will fetch the aggregated rules file on every session and apply it to all requests.
Prefer selective loading? Replace the one URL with the specific skill files you want:
{
"instructions": [
"https://raw.githubusercontent.com/linagora/twake-guidelines/main/skills/twake-twake-react-conventions/SKILL.md",
"https://raw.githubusercontent.com/linagora/twake-guidelines/main/skills/twake-twake-frontend-testing/SKILL.md",
"https://raw.githubusercontent.com/linagora/twake-guidelines/main/skills/twake-twake-git-conventions/SKILL.md"
]
}
Global install (applies to every OpenCode session, not just this project): copy the aggregate file once:
mkdir -p ~/.config/opencode
curl -fsSL https://raw.githubusercontent.com/linagora/twake-guidelines/main/AGENTS.md \
> ~/.config/opencode/AGENTS.md
Any agent that reads AGENTS.md at the repo root can pick up the aggregated rules. Either commit a copy to your project (curl ... > AGENTS.md) or use a git submodule:
git submodule add https://github.com/linagora/twake-guidelines.git .twake-guidelines
ln -s .twake-guidelines/AGENTS.md AGENTS.md
| Skill | Applies to | Summary |
|---|---|---|
twake-react-conventions | React / JS frontend | Functional components, named exports, twake-mui first then cozy-ui, no inline styles |
twake-javascript-conventions | JS / TS | async/await, null over undefined, Intl/date-fns (not moment), AppLinker |
twake-javascript-naming | JS / TS | Function prefixes, cozy-client query as, import order |
twake-frontend-testing | Frontend tests | testing-library, data-testid, queryBy, colocated specs, no snapshots |
twake-frontend-lib-workflow | React apps consuming cozy-* / twake-* libs | No hand-edits to node_modules, yarn link / rlink via cozy-libs monorepo |
twake-cozy-client | Apps querying a Cozy stack | No direct collection access, Q() + useQuery/client.query, shared queries module, alias naming, mandatory fetchPolicy, sortBy/indexFields invariants |
twake-git-conventions | All stacks | Conventional Commits, atomic commits, structured PR workflow with Summary-only bodies |
frontend-dependencies — library dependency rules (peerDependencies, no Material-UI)java-conventions — Spring / Quarkus patternsgo-conventions — project layout, error handlingci-deployment — Travis / GitHub Actions, feature flagsEach skill lives in skills/<name>/SKILL.md with YAML frontmatter (name, description). The description field decides when Claude Code auto-triggers the skill — be specific about the trigger context.
After editing any skill, regenerate AGENTS.md:
./scripts/gen-agents.sh
The script concatenates every skills/*/SKILL.md into AGENTS.md, stripping YAML frontmatter and demoting headings by one level. It has no dependencies (pure Bash + awk). Commit the regenerated AGENTS.md alongside the skill change.
Do not hand-edit AGENTS.md — changes there will be overwritten on the next regeneration.
OpenCode commands — reusable agent prompts that can be invoked from the CLI. Copy the commands/ folder into your project or reference individual files via opencode.json:
{
"commands": [
"https://raw.githubusercontent.com/linagora/twake-guidelines/main/commands/locales.md"
]
}
OpenCode commands — reusable agent prompts that can be invoked from the CLI. Copy the commands/ folder into your project or reference individual files via opencode.json:
npx claudepluginhub linagora/twake-guidelines --plugin twake-guidelinesComprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Access thousands of AI prompts and skills directly in your AI coding assistant. Search prompts, discover skills, save your own, and improve prompts with AI.
Complete developer toolkit for Claude Code
Intelligent draw.io diagramming plugin with AI-powered diagram generation, multi-platform embedding (GitHub, Confluence, Azure DevOps, Notion, Teams, Harness), conditional formatting, live data binding, and MCP server integration for programmatic diagram creation and management.
Feature development with code-architect/explorer/reviewer agents, CLAUDE.md audit and session learnings, and Agent Skills creation with eval benchmarking from Anthropic.
Orchestrate multi-agent teams for parallel code review, hypothesis-driven debugging, and coordinated feature development using Claude Code's Agent Teams