ezai-marketplace 1.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.
Files changed (51) hide show
  1. package/.claude-plugin/marketplace.json +90 -0
  2. package/README.md +70 -0
  3. package/bin/ezai.js +74 -0
  4. package/package.json +51 -0
  5. package/plugins/ezai-code-formatter/.claude-plugin/plugin.json +10 -0
  6. package/plugins/ezai-code-formatter/SKILL.md +65 -0
  7. package/plugins/ezai-code-formatter/evals/eval_set_code_formatter.json +23 -0
  8. package/plugins/ezai-code-formatter/references/index.md +36 -0
  9. package/plugins/ezai-code-formatter/references/javascript/style-layout.instructions.md +69 -0
  10. package/plugins/ezai-code-formatter/references/python/style-layout.instructions.md +70 -0
  11. package/plugins/ezai-docs-writer/.claude-plugin/plugin.json +10 -0
  12. package/plugins/ezai-docs-writer/SKILL.md +119 -0
  13. package/plugins/ezai-docs-writer/evals/eval_set_docs_writer.json +23 -0
  14. package/plugins/ezai-docs-writer/references/index.md +48 -0
  15. package/plugins/ezai-docs-writer/references/javascript/standards.md +112 -0
  16. package/plugins/ezai-docs-writer/references/python/plugins-deploy.md +109 -0
  17. package/plugins/ezai-docs-writer/references/python/quadrants-templates.md +316 -0
  18. package/plugins/ezai-docs-writer/references/python/standards.md +177 -0
  19. package/plugins/ezai-persona-senior-dev/.claude-plugin/plugin.json +10 -0
  20. package/plugins/ezai-persona-senior-dev/SKILL.md +74 -0
  21. package/plugins/ezai-persona-senior-dev/evals/eval_set_persona_senior_dev.json +23 -0
  22. package/plugins/ezai-project-architect/.claude-plugin/plugin.json +10 -0
  23. package/plugins/ezai-project-architect/SKILL.md +32 -0
  24. package/plugins/ezai-project-architect/evals/eval_set_project_architect.json +23 -0
  25. package/plugins/ezai-project-architect/references/index.md +30 -0
  26. package/plugins/ezai-project-architect/references/javascript/architecture.md +106 -0
  27. package/plugins/ezai-project-architect/references/python/architecture.md +100 -0
  28. package/plugins/ezai-project-config/.claude-plugin/plugin.json +10 -0
  29. package/plugins/ezai-project-config/SKILL.md +29 -0
  30. package/plugins/ezai-project-config/evals/eval_set_project_config.json +23 -0
  31. package/plugins/ezai-project-config/references/index.md +30 -0
  32. package/plugins/ezai-project-config/references/javascript/config.md +103 -0
  33. package/plugins/ezai-project-config/references/python/config.md +106 -0
  34. package/plugins/ezai-project-performance/.claude-plugin/plugin.json +10 -0
  35. package/plugins/ezai-project-performance/SKILL.md +29 -0
  36. package/plugins/ezai-project-performance/evals/eval_set_project_performance.json +23 -0
  37. package/plugins/ezai-project-performance/references/index.md +30 -0
  38. package/plugins/ezai-project-performance/references/javascript/performance.md +94 -0
  39. package/plugins/ezai-project-performance/references/python/performance.md +78 -0
  40. package/plugins/ezai-project-quality/.claude-plugin/plugin.json +10 -0
  41. package/plugins/ezai-project-quality/SKILL.md +29 -0
  42. package/plugins/ezai-project-quality/evals/eval_set_project_quality.json +23 -0
  43. package/plugins/ezai-project-quality/references/index.md +30 -0
  44. package/plugins/ezai-project-quality/references/javascript/quality.md +100 -0
  45. package/plugins/ezai-project-quality/references/python/quality.md +128 -0
  46. package/src/catalogue.js +29 -0
  47. package/src/commands/info.js +19 -0
  48. package/src/commands/install.js +177 -0
  49. package/src/commands/list.js +13 -0
  50. package/src/commands/search.js +16 -0
  51. package/src/commands/uninstall.js +97 -0
@@ -0,0 +1,90 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/claude-code-marketplace.json",
3
+ "name": "ezai-marketplace",
4
+ "version": "1.0.0",
5
+ "description": "Curated marketplace of AI skills for senior developers (Python / JS/TS)",
6
+ "owner": {
7
+ "name": "ezai",
8
+ "email": "floriansalort@gmail.com"
9
+ },
10
+ "updatedAt": "2026-05-28",
11
+ "plugins": [
12
+ {
13
+ "name": "ezai-code-formatter",
14
+ "description": "Apply source file visual structure to match project conventions: section header comments, import ordering, spacing, and formatting — without touching logic.",
15
+ "source": "./plugins/ezai-code-formatter",
16
+ "category": "development",
17
+ "version": "1.0.0",
18
+ "author": {
19
+ "name": "ezai",
20
+ "email": "floriansalort@gmail.com"
21
+ }
22
+ },
23
+ {
24
+ "name": "ezai-docs-writer",
25
+ "description": "Produce documentation content for software projects: MkDocs pages, API references, changelogs, and technical writing in a consistent style.",
26
+ "source": "./plugins/ezai-docs-writer",
27
+ "category": "development",
28
+ "version": "1.0.0",
29
+ "author": {
30
+ "name": "ezai",
31
+ "email": "floriansalort@gmail.com"
32
+ }
33
+ },
34
+ {
35
+ "name": "ezai-persona-senior-dev",
36
+ "description": "Elite Senior Developer persona for enterprise-grade Python and JavaScript/TypeScript projects. Apply for significant development tasks requiring senior-level judgment.",
37
+ "source": "./plugins/ezai-persona-senior-dev",
38
+ "category": "development",
39
+ "version": "1.0.0",
40
+ "author": {
41
+ "name": "ezai",
42
+ "email": "floriansalort@gmail.com"
43
+ }
44
+ },
45
+ {
46
+ "name": "ezai-project-architect",
47
+ "description": "Architecture and design standards for Python and JS/TS projects: module structure, public API surface, and design patterns (Repository, Service, Factory).",
48
+ "source": "./plugins/ezai-project-architect",
49
+ "category": "development",
50
+ "version": "1.0.0",
51
+ "author": {
52
+ "name": "ezai",
53
+ "email": "floriansalort@gmail.com"
54
+ }
55
+ },
56
+ {
57
+ "name": "ezai-project-config",
58
+ "description": "Toolchain setup, project configuration, and infrastructure standards for Python and JS/TS projects: pyproject.toml, package.json, linters, CI/CD.",
59
+ "source": "./plugins/ezai-project-config",
60
+ "category": "development",
61
+ "version": "1.0.0",
62
+ "author": {
63
+ "name": "ezai",
64
+ "email": "floriansalort@gmail.com"
65
+ }
66
+ },
67
+ {
68
+ "name": "ezai-project-performance",
69
+ "description": "Concurrency, async patterns, and performance optimization for Python and JS/TS projects: async/await, threading vs multiprocessing, profiling, and caching strategies.",
70
+ "source": "./plugins/ezai-project-performance",
71
+ "category": "development",
72
+ "version": "1.0.0",
73
+ "author": {
74
+ "name": "ezai",
75
+ "email": "floriansalort@gmail.com"
76
+ }
77
+ },
78
+ {
79
+ "name": "ezai-project-quality",
80
+ "description": "Testing, security, and input validation standards for Python and JS/TS projects: test architecture with pytest/Vitest, security patterns, and code quality enforcement.",
81
+ "source": "./plugins/ezai-project-quality",
82
+ "category": "development",
83
+ "version": "1.0.0",
84
+ "author": {
85
+ "name": "ezai",
86
+ "email": "floriansalort@gmail.com"
87
+ }
88
+ }
89
+ ]
90
+ }
package/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # ezai-marketplace
2
+
3
+ Marketplace curated de skills IA pour Claude Code.
4
+
5
+ ## Installation
6
+
7
+ ### Via npm (recommandé)
8
+
9
+ ```bash
10
+ # Sans installation globale
11
+ npx ezai-marketplace install skill-mon-plugin
12
+
13
+ # CLI global
14
+ npm install -g ezai-marketplace
15
+ ```
16
+
17
+ ### Via script (sans Node.js)
18
+
19
+ ```bash
20
+ git clone https://github.com/Neuraaak/ezai-marketplace
21
+ cd ezai-marketplace
22
+ scripts\install.bat skill-mon-plugin
23
+ ```
24
+
25
+ ## Commandes
26
+
27
+ | Commande | Description |
28
+ |---|---|
29
+ | `ezai list` | Lister tous les plugins disponibles |
30
+ | `ezai search <terme>` | Rechercher un plugin par nom ou catégorie |
31
+ | `ezai info <plugin>` | Afficher les détails d'un plugin |
32
+ | `ezai install <plugin>` | Installer un plugin dans `.agents/` |
33
+
34
+ ### Options
35
+
36
+ - `--dest <chemin>` : Répertoire de destination (défaut : répertoire courant)
37
+
38
+ ## Structure d'un plugin
39
+
40
+ ```
41
+ plugins/skill-mon-plugin/
42
+ ├── .claude-plugin/
43
+ │ └── plugin.json
44
+ └── skills/
45
+ └── <categorie>/
46
+ └── SKILL.md
47
+ ```
48
+
49
+ ### plugin.json
50
+
51
+ ```json
52
+ {
53
+ "name": "skill-mon-plugin",
54
+ "version": "1.0.0",
55
+ "description": "Description du skill",
56
+ "author": "ezai",
57
+ "category": "ma-categorie",
58
+ "skills": ["skills/ma-categorie/SKILL.md"]
59
+ }
60
+ ```
61
+
62
+ ## Mettre à jour le catalogue
63
+
64
+ Après avoir ajouté un plugin dans `plugins/` :
65
+
66
+ ```bash
67
+ node scripts/build-index.js
68
+ # ou
69
+ scripts\build-index.bat
70
+ ```
package/bin/ezai.js ADDED
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { Command } = require('commander');
5
+ const catalogue = require('../src/catalogue');
6
+ const { runList } = require('../src/commands/list');
7
+ const { runSearch } = require('../src/commands/search');
8
+ const { runInfo } = require('../src/commands/info');
9
+ const { runInstall } = require('../src/commands/install');
10
+ const { runUninstall } = require('../src/commands/uninstall');
11
+
12
+ const program = new Command();
13
+
14
+ program.name('ezai').description('CLI du marketplace de skills IA ezai').version('1.0.0');
15
+
16
+ program
17
+ .command('list')
18
+ .description('Lister tous les plugins disponibles')
19
+ .action(() =>
20
+ runList(catalogue).catch((err) => {
21
+ console.error(err.message);
22
+ process.exit(1);
23
+ })
24
+ );
25
+
26
+ program
27
+ .command('search <terme>')
28
+ .description('Rechercher un plugin par nom ou catégorie')
29
+ .action((terme) =>
30
+ runSearch(terme, catalogue).catch((err) => {
31
+ console.error(err.message);
32
+ process.exit(1);
33
+ })
34
+ );
35
+
36
+ program
37
+ .command('info <plugin>')
38
+ .description("Afficher les détails d'un plugin")
39
+ .action((plugin) =>
40
+ runInfo(plugin, catalogue).catch((err) => {
41
+ console.error(err.message);
42
+ process.exit(1);
43
+ })
44
+ );
45
+
46
+ program
47
+ .command('install [plugin]')
48
+ .description('Installer un plugin (ou tous si aucun nom fourni) dans .agents/')
49
+ .option('--dest <chemin>', 'Répertoire de destination (défaut : répertoire home)')
50
+ .option('--claude', 'Déployer les symlinks vers ~/.claude/skills/')
51
+ .option('--gemini', 'Déployer les symlinks vers ~/.gemini/skills/')
52
+ .option('--copilot', 'Déployer les symlinks vers ~/.copilot/skills/')
53
+ .action((plugin, options) =>
54
+ runInstall(plugin, options, catalogue).catch((err) => {
55
+ console.error(err.message);
56
+ process.exit(1);
57
+ })
58
+ );
59
+
60
+ program
61
+ .command('uninstall [skill]')
62
+ .description('Désinstaller un skill (ou tous si aucun nom fourni)')
63
+ .option('--dest <chemin>', 'Répertoire de base (défaut : répertoire home)')
64
+ .option('--claude', 'Supprimer uniquement les symlinks ~/.claude/skills/')
65
+ .option('--gemini', 'Supprimer uniquement les symlinks ~/.gemini/skills/')
66
+ .option('--copilot', 'Supprimer uniquement les symlinks ~/.copilot/skills/')
67
+ .action((skill, options) =>
68
+ runUninstall(skill, options, catalogue).catch((err) => {
69
+ console.error(err.message);
70
+ process.exit(1);
71
+ })
72
+ );
73
+
74
+ program.parse();
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "ezai-marketplace",
3
+ "version": "1.0.0",
4
+ "description": "CLI pour installer des skills IA depuis le marketplace ezai",
5
+ "files": [
6
+ "bin/",
7
+ "src/",
8
+ "plugins/",
9
+ ".claude-plugin/"
10
+ ],
11
+ "main": "src/catalogue.js",
12
+ "bin": {
13
+ "ezai": "./bin/ezai.js"
14
+ },
15
+ "scripts": {
16
+ "test": "jest",
17
+ "build-index": "node scripts/build-index.js",
18
+ "prepare": "simple-git-hooks"
19
+ },
20
+ "simple-git-hooks": {
21
+ "pre-commit": "node scripts/build-index.js && git add .claude-plugin/marketplace.json && npx lint-staged && npm test"
22
+ },
23
+ "lint-staged": {
24
+ "*.js": [
25
+ "prettier --write",
26
+ "eslint --fix"
27
+ ]
28
+ },
29
+ "keywords": [
30
+ "ai",
31
+ "skills",
32
+ "claude",
33
+ "marketplace"
34
+ ],
35
+ "license": "MIT",
36
+ "engines": {
37
+ "node": ">=18.0.0"
38
+ },
39
+ "dependencies": {
40
+ "commander": "^12.0.0"
41
+ },
42
+ "devDependencies": {
43
+ "@eslint/js": "^10.0.1",
44
+ "eslint": "^10.4.0",
45
+ "eslint-config-prettier": "^10.1.8",
46
+ "jest": "^29.0.0",
47
+ "lint-staged": "^17.0.5",
48
+ "prettier": "^3.8.3",
49
+ "simple-git-hooks": "^2.13.1"
50
+ }
51
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "ezai-code-formatter",
3
+ "description": "Apply source file visual structure to match project conventions: section header comments, import ordering, spacing, and formatting — without touching logic.",
4
+ "version": "1.0.0",
5
+ "author": {
6
+ "name": "ezai",
7
+ "email": "floriansalort@gmail.com"
8
+ },
9
+ "category": "development"
10
+ }
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: ezai-code-formatter
3
+ description:
4
+ "Apply this skill when a source file's visual structure needs to match
5
+ project conventions — not its logic. This means: adding section header comments (IMPORTS,
6
+ CONSTANTS, CLASSES, FUNCTIONS), inserting `# /////` or `# ---` separator lines, sorting
7
+ imports into Standard → third-party → local groups, or reorganizing class members
8
+ (constructor first, then public, then private methods).
9
+
10
+ Invoke when the user says a file \"doesn't look like the rest\", is \"missing section
11
+ markers\", needs imports \"reorganized by convention\", or wants a file \"formatted
12
+ according to our standards\". Supports Python, JS/TS, and any language with a
13
+ style-layout file in `references/`. Works for requests in any language (French/English/etc.).
14
+
15
+ Skip for: logic/bug fixes, linting tools (ruff, eslint, prettier), renaming."
16
+ ---
17
+
18
+ You are a Code Formatter specialized in structural and visual project standards (2026). You do not run external tools like ruff or eslint; your role is to ensure the **visual landmarks** and **organization** of the code match the Project's Constitution.
19
+
20
+ ## Workflow
21
+
22
+ 1. **Detect the language**
23
+ - Identify the target file's language from its extension (`.py`, `.ts`, `.js`, etc.).
24
+ - Read `references/index.md` to find the matching subdirectory and confirm it is supported.
25
+
26
+ 2. **Load style standards**
27
+ - Load `references/<language>/style-layout.instructions.md` for the detected language.
28
+ - Use `<thinking>` tags to identify the specific markers and rules that apply (e.g., `# ///...`, `# ---...`).
29
+
30
+ 3. **Apply structural edits**
31
+ - Add/adjust main section separators (IMPORTS, CONSTANTS, CLASSES, FUNCTIONS).
32
+ - Reorganize imports: Standard/built-in → third-party → local, sorted alphabetically within each group.
33
+ - Group class members: constructor first, then public methods, then private methods.
34
+ - Enforce subsection markers (dashes) for internal class structure.
35
+
36
+ 4. **Cleanup**
37
+ - Remove "what" comments; keep "why" comments only.
38
+ - Ensure docstrings follow the language's canonical style (Google for Python, JSDoc for JS/TS).
39
+
40
+ ## Constraints
41
+
42
+ - **No logic:** Never modify business logic, variable names, or function signatures.
43
+ - **No shell:** Do not invoke ruff, eslint, prettier, or any external formatter.
44
+ - **English:** All section headers and comments must be in English.
45
+ - **Tools:** Read, Write, Edit, Glob, Grep only.
46
+
47
+ ## Output format
48
+
49
+ Start with a `<thinking>` block identifying:
50
+
51
+ - The detected language and subdirectory used
52
+ - Which style rules apply (separator style, import groups, docstring format)
53
+
54
+ Then provide a concise summary of structural changes made:
55
+
56
+ - Which sections were added or adjusted
57
+ - How imports were reorganized
58
+ - Which comments were removed or preserved
59
+
60
+ ## Success criteria
61
+
62
+ - Section markers are symmetrical and visually authoritative.
63
+ - Imports are correctly grouped and alphabetically sorted within each group.
64
+ - Code organization matches the class structure defined in the language's style layout.
65
+ - Docstrings follow the canonical style for the detected language.
@@ -0,0 +1,23 @@
1
+ {
2
+ "skill_name": "code-formatter",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Formate ce module Python selon les standards du projet. Il manque les séparateurs de sections, les imports sont mal organisés, et il n'y a pas de __all__ :\n\nimport os\nfrom mylib import helper\nimport sys\nfrom pathlib import Path\n\nAPI_URL = 'https://api.example.com'\n\ndef fetch_data(url: str) -> dict:\n return {}\n\nclass DataClient:\n def __init__(self): pass",
7
+ "expected_output": "Module restructuré avec séparateurs de sections (# ── Imports ──, # ── Constants ──, etc.), imports organisés (stdlib → third-party → local), __all__ défini, spacing cohérent.",
8
+ "files": []
9
+ },
10
+ {
11
+ "id": 2,
12
+ "prompt": "Applique les standards de formatage visuels à ce fichier TypeScript. Les imports sont mélangés, il manque les séparateurs de sections et la cohérence des types :\n\nimport { Router } from 'express'\nimport type { User } from './types'\nimport fs from 'fs'\nimport { db } from '../db'\n\nconst MAX_RETRIES = 3\n\nexport async function getUser(id: string): Promise<User> {\n return db.users.findOne(id)\n}",
13
+ "expected_output": "Fichier restructuré : imports groupés (Node built-ins → external → internal → types), séparateurs de sections visuels, exports explicites en bas ou inline cohérents, espacement normalisé.",
14
+ "files": []
15
+ },
16
+ {
17
+ "id": 3,
18
+ "prompt": "Ce module Python a été récemment modifié. Identifie et applique uniquement les corrections de formatage nécessaires (pas de refactoring logique) :\n\nfrom typing import Optional,List\n\ndef process_items(items:List[str],limit:Optional[int]=None)->List[str]:\n \"\"\"Process items.\"\"\"\n result=[]\n for item in items:\n if limit and len(result)>=limit:break\n result.append(item.strip())\n return result",
19
+ "expected_output": "Espaces autour des : et , dans les annotations de type, espaces autour de = dans les defaults, indentation du corps de boucle, docstring complète si manquante. Aucun changement logique.",
20
+ "files": []
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,36 @@
1
+ # Code Formatter References Index
2
+
3
+ Route to the correct language subdirectory based on the file extension.
4
+
5
+ ## Supported languages
6
+
7
+ | Language | Extensions | Subdirectory | File |
8
+ | :----------------- | :---------------------- | :---------------- | :--- |
9
+ | Python | `.py` | `python/` | `style-layout.instructions.md` |
10
+ | JavaScript / TypeScript | `.js` `.ts` `.jsx` `.tsx` `.mjs` | `javascript/` | `style-layout.instructions.md` |
11
+
12
+ More languages can be added under their own subdirectory following the same pattern.
13
+
14
+ ---
15
+
16
+ ## Python (`python/`)
17
+
18
+ Docstring style: Google. Separator: `# ///...` (main) + `# ---...` (sub).
19
+
20
+ - `python/style-layout.instructions.md` — section markers, import grouping, class structure, docstring format
21
+
22
+ ---
23
+
24
+ ## JavaScript / TypeScript (`javascript/`)
25
+
26
+ Docstring style: JSDoc. Separator: `// ///...` (main) + `// ---...` (sub).
27
+
28
+ - `javascript/style-layout.instructions.md` — section markers, import grouping (node:, 3rd-party, local), JSDoc format
29
+
30
+ ---
31
+
32
+ ## Adding a new language
33
+
34
+ 1. Create a `<language>/` subdirectory here.
35
+ 2. Add a `style-layout.instructions.md` covering: section separators, import grouping, docstring/comment style.
36
+ 3. Register the language in the table above.
@@ -0,0 +1,69 @@
1
+ # JS/TS Style & Layout Standards (UIA)
2
+
3
+ Visual structure, import organization, and documentation standards for JS/TS source files.
4
+
5
+ <rules>
6
+ - **SECTIONING:** Use `// ///////////////////////////////////////////////////////////////` for main sections.
7
+ - **DOCSTRINGS:** Use JSDoc (Google-style) for all public functions, classes, and types.
8
+ - **IMPORTS:** Group by: 1. standard (node:), 2. 3rd-party, 3. local. Sort alphabetically.
9
+ - **TYPES:** Use `import type` for TypeScript types to aid tree-shaking.
10
+ - **COMMENTS:** Explain "why", not "what". Always use English.
11
+ </rules>
12
+
13
+ ## Main Section Separators
14
+
15
+ Use the forward slash separator for major code boundaries.
16
+
17
+ ```javascript
18
+ // ///////////////////////////////////////////////////////////////
19
+ // IMPORTS
20
+ // ///////////////////////////////////////////////////////////////
21
+ ```
22
+
23
+ ## Subsection Markers
24
+
25
+ Use dashes for internal organization within classes, functions, or modules.
26
+
27
+ ```javascript
28
+ // ------------------------------------------------
29
+ // PRIVATE METHODS
30
+ // ------------------------------------------------
31
+ ```
32
+
33
+ ## Import Organization Pattern
34
+
35
+ ```javascript
36
+ // ///////////////////////////////////////////////////////////////
37
+ // IMPORTS
38
+ // ///////////////////////////////////////////////////////////////
39
+ // Standard library (node:)
40
+ import { readFile } from "node:fs/promises";
41
+ import { join } from "node:path";
42
+
43
+ // Third-party
44
+ import express from "express";
45
+ import { z } from "zod";
46
+
47
+ // Local
48
+ import { CustomError } from "./exceptions.js";
49
+ ```
50
+
51
+ <examples>
52
+ /**
53
+ * Calculates metrics for a dataset.
54
+ *
55
+ * @param {Array<number>} data - A list of numeric measurements.
56
+ * @returns {Record<string, number>} A mapping of metric names to values.
57
+ */
58
+ function calculateMetrics(data: Array<number>): Record<string, number> {
59
+ // Implementation
60
+ }
61
+ </examples>
62
+
63
+ <success_criteria>
64
+
65
+ - Section markers used for navigation.
66
+ - Imports correctly grouped and sorted.
67
+ - JSDoc present for all public symbols.
68
+
69
+ </success_criteria>
@@ -0,0 +1,70 @@
1
+ # Python Style & Layout Standards (UIA)
2
+
3
+ Visual structure, import organization, and documentation standards for Python source files.
4
+
5
+ <rules>
6
+ - **SECTIONING:** Use `# ///////////////////////////////////////////////////////////////` for main sections.
7
+ - **DOCSTRINGS:** Use Google-style docstrings exclusively.
8
+ - **IMPORTS:** Group by: 1. stdlib, 2. 3rd-party, 3. local. Sort alphabetically.
9
+ - **LANGUAGE:** Always use English for comments and docstrings.
10
+ - **COMMENTS:** Explain "why", not "what". Avoid noise.
11
+ </rules>
12
+
13
+ ## Main Section Separators
14
+
15
+ Use the forward slash separator to create clear visual boundaries.
16
+
17
+ ```python
18
+ # ///////////////////////////////////////////////////////////////
19
+ # IMPORTS
20
+ # ///////////////////////////////////////////////////////////////
21
+ ```
22
+
23
+ ## Subsection Markers
24
+
25
+ Use dashes for internal organization within classes or functions.
26
+
27
+ ```python
28
+ # ------------------------------------------------
29
+ # PRIVATE METHODS
30
+ # ------------------------------------------------
31
+ ```
32
+
33
+ ## Import Organization Pattern
34
+
35
+ ```python
36
+ # ///////////////////////////////////////////////////////////////
37
+ # IMPORTS
38
+ # ///////////////////////////////////////////////////////////////
39
+ # Standard library
40
+ import os
41
+ from pathlib import Path
42
+
43
+ # Third-party
44
+ from rich.console import Console
45
+
46
+ # Local
47
+ from .exceptions import CustomError
48
+ ```
49
+
50
+ <examples>
51
+ # Google-style docstring example
52
+ def calculate_metrics(data: list[float]) -> dict[str, float]:
53
+ """Calculates statistical metrics for a dataset.
54
+
55
+ Args:
56
+ data: A list of numeric measurements.
57
+
58
+ Returns:
59
+ dict: A mapping of metric names to values.
60
+ """
61
+
62
+ </examples>
63
+
64
+ <success_criteria>
65
+
66
+ - Section markers used for navigation.
67
+ - Imports correctly grouped and sorted.
68
+ - Google docstrings present for all public symbols.
69
+
70
+ </success_criteria>
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "ezai-docs-writer",
3
+ "description": "Produce documentation content for software projects: MkDocs pages, API references, changelogs, and technical writing in a consistent style.",
4
+ "version": "1.0.0",
5
+ "author": {
6
+ "name": "ezai",
7
+ "email": "floriansalort@gmail.com"
8
+ },
9
+ "category": "development"
10
+ }