jan-project-standard
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseEstándar de proyectos — Jan Polanco Velasco
项目标准 — Jan Polanco Velasco
Este skill encapsula cómo se construyen y gobiernan los proyectos de Jan: una forma
de trabajar repetible, reproducible y auditable que ya está aplicada en decenas de
repositorios personales y académicos.
Filosofía central: todo lo que vive dentro de la carpeta del proyecto tiene una instrucción escrita. El documento que la contiene es, la fuente única de verdad. Un proyecto sano es un proyecto donde un agente (o una persona) puede leer la constitución y operar sin adivinar.CONSTITUTION.md
此 skill 封装了 Jan 构建和治理项目的方式:一种可重复、可复现且可审计的工作流程,目前已经应用于数十个个人和学术仓库。
核心理念: 项目目录内的所有内容都有书面说明。承载这些说明的文档是,即唯一事实来源。健康的项目应当让 Agent(或人)阅读章程后,无需猜测即可开展操作。CONSTITUTION.md
Cómo invocarlo (plantilla de prompt)
如何调用(Prompt 模板)
No hace falta memorizar comandos: describe tu caso en lenguaje natural. Estas son las
piezas que conviene incluir:
text
@jan-project-standard
Soy: Jan | NO soy Jan → aquí mi nombre y correo
Estado: proyecto nuevo | proyecto existente (ya tiene README y/o CONSTITUTION.md)
Repo: git@github.com:<usuario>/<repo>.git
Stack: Python (uv) · ¿paquete o app? · ¿ty? · ¿Archify?
Objetivo: crear desde cero | estandarizar SIN borrar | solo auditar | añadir X
Restricción: no elimines nada existente; mejora y completa.Reglas de convivencia (obligatorias):
- En un proyecto existente: primero leer, luego proponer, luego aplicar. Nunca reemplaces
archivos del usuario (README, , código) sin revisarlos.
CONSTITUTION.md - Si no eres Jan: no uses rutas ni repos fijos; aporta tus datos (ver "Identidad Git").
- Ante la duda, audita () y muestra el informe antes de tocar nada.
--audit
无需记忆命令:用自然语言描述你的场景。建议包含以下内容:
text
@jan-project-standard
Soy: Jan | NO soy Jan → aquí mi nombre y correo
Estado: proyecto nuevo | proyecto existente (ya tiene README y/o CONSTITUTION.md)
Repo: git@github.com:<usuario>/<repo>.git
Stack: Python (uv) · ¿paquete o app? · ¿ty? · ¿Archify?
Objetivo: crear desde cero | estandarizar SIN borrar | solo auditar | añadir X
Restricción: no elimines nada existente; mejora y completa.协作规则(强制):
- 对于现有项目:先阅读,再提出方案,然后应用。未经审阅,绝不替换用户的文件(README、、代码)。
CONSTITUTION.md - 如果你不是 Jan:不要使用固定路径或固定仓库;请提供你的信息(参见“Git 身份”)。
- 如有疑问,先进行审计()并展示报告,然后再进行任何修改。
--audit
Cuándo usar este skill
何时使用此 skill
- Crear un proyecto o repositorio nuevo desde cero.
- Estandarizar un proyecto existente que no sigue el estándar.
- Redactar, poblar o actualizar un .
CONSTITUTION.md - Configurar + Ruff + pre-commit + Makefile + CI.
uv - Conectar un proyecto local a un repositorio de GitHub.
- Preparar un README profesional con badges, licencia y estructura.
- 从零创建新的项目或仓库。
- 标准化未遵循该标准的现有项目。
- 编写、填充或更新 。
CONSTITUTION.md - 配置 + Ruff + pre-commit + Makefile + CI。
uv - 将本地项目接入 GitHub 仓库。
- 准备包含徽章、许可证和目录结构的专业 README。
Cuándo NO usarlo
何时不应使用
- Proyectos que ya tienen su propio estándar y el usuario no quiere adoptar este.
- Cambios triviales de una línea en un repo ya estandarizado (no re-scaffold).
- 项目已经拥有自己的标准,且用户不希望采用本标准。
- 对已标准化仓库进行一行代码的简单修改(无需重新搭建脚手架)。
Las 10 reglas no negociables
10 条不可协商的规则
- CONSTITUTION.md primero. La constitución se crea al inicio y se actualiza en el mismo commit ante cualquier cambio arquitectónico, tecnológico o de proceso.
- manda. Gestión de entornos y dependencias solo con
uv. Prohibidouvypip. Dependencias enrequirements.txt;pyproject.tomlsí se versiona.uv.lock - Python 3.13+ fijado en y en
.python-version.requires-python - src-layout () con build backend
src/<paquete>/, salvo apps simples (modouv_build).--app - Calidad automatizada: Ruff (lint + formato), pre-commit y pytest. Nada se sube
con en rojo.
make checkestá prohibido salvo causa documentada.--no-verify - Makefile como interfaz. Todos los comandos del proyecto se exponen en targets
(los lista). La paridad local ↔ CI es obligatoria: el CI corre lo mismo.
make help - Conventional Commits (,
feat:,fix:,docs:,refactor:,style:,test:) en un solo idioma claro; descripciones en imperativo.chore: - GitHub gobernado: plantilla de Pull Request, plantillas de issue, CI, Dependabot,
labels declarativas y rama protegida por PRs.
main - README profesional: badges, tabla de contenidos, stack, primeros pasos, estructura, arquitectura (opcional, con Archify), contribución y licencia.
- Identidad Git automática: la carpeta de proyectos hereda nombre, correo y llave SSH
vía en
includeIf. Perfil A para Jan (~/.gitconfig); Perfil B para cualquier otro usuario (macOS o Windows), y solo si lo pide (ver~/Desktop/Repositorios/personal/).references/git-identity.md
- 优先创建 。 章程应在项目开始时创建,并在任何架构、技术或流程变更时通过同一次 commit 同步更新。
CONSTITUTION.md - 以 为准。 环境和依赖管理只能使用
uv。禁止使用uv和pip。依赖写在requirements.txt中;pyproject.toml必须纳入版本控制。uv.lock - 在 和
.python-version中固定使用 Python 3.13+。requires-python - 使用 src-layout()和构建后端
src/<paquete>/,简单应用除外(uv_build模式)。--app - 自动化质量保障: Ruff(lint + 格式化)、pre-commit 和 pytest。不得在 未通过时推送内容。除非有书面记录的原因,否则禁止使用
make check。--no-verify - 使用 Makefile 作为接口。 项目的所有命令都应通过 targets 暴露(会列出这些命令)。本地与 CI 必须保持一致:CI 执行相同的命令。
make help - 使用 Conventional Commits(、
feat:、fix:、docs:、refactor:、style:、test:),并统一使用一种清晰的语言;描述采用祈使语气。chore: - 治理 GitHub: 提供 Pull Request 模板、issue 模板、CI、Dependabot、声明式 labels,并通过 PR 保护 分支。
main - 提供专业 README: 包含徽章、目录、技术栈、初始步骤、目录结构、架构(可选,使用 Archify)、贡献指南和许可证。
- 自动配置 Git 身份: 项目文件夹通过 中的
~/.gitconfig自动继承姓名、邮箱和 SSH 密钥。配置 A 供 Jan 使用(includeIf);配置 B 供其他任何用户使用(macOS 或 Windows),并且仅在用户明确要求时启用(参见~/Desktop/Repositorios/personal/)。references/git-identity.md
Modo A — Crear un proyecto nuevo
模式 A — 创建新项目
Paso 1 · Ejecutar el scaffolder
第 1 步 · 运行脚手架工具
El scaffolder copia las plantillas, sustituye variables y deja el proyecto listo. Usa
solo la biblioteca estándar de Python (no requiere para ejecutarse):
uvbash
python3 <SKILL_DIR>/scripts/new_project.py \
--name "Nombre del Proyecto" \
--path ./nombre-del-proyecto \
--description "Descripción breve del proyecto." \
--gitLa autoría y el owner se deducen solos:/--authorsalen de/git config user.name, yuser.emailde--owner. Puedes sobreescribirlos con flags si quieres.git config github.user
Opciones más usadas:
| Opción | Efecto |
|---|---|
| Nombre legible del proyecto (obligatorio). |
| Carpeta destino (por defecto |
| Nombre del repo en GitHub (por defecto, slug del nombre). |
| Cuenta/organización de GitHub (por defecto: |
| Descripción de una línea (va al README, pyproject y constitución). |
| Autoría (por defecto: |
| Versión de Python (por defecto |
| Proyecto de aplicación (sin paquete ni build-system), en vez de src-layout. |
| Solo lo esencial: sin |
| Incluye la sección Arquitectura del proyecto (Archify) en el README y la fila en la constitución. |
| Omite |
| No genera |
| No genera |
| Inicializa el repositorio git (rama |
| Ejecuta |
| Sobrescribe archivos existentes. |
| Muestra qué haría sin escribir nada. |
| Solo audita un proyecto existente (FALTA/DIFIERE/OK) sin escribir nada; infiere el contexto del repo. |
⚠️ Antes de sobrescribir: si la carpeta destino ya tiene archivos (sobre todo unoCONSTITUTION.mdpropios), no usesREADME.mda ciegas. Investiga, lee lo existente y fusiona en lugar de reemplazar.--force
脚手架工具会复制模板、替换变量,并使项目进入可用状态。它仅使用 Python 标准库(执行时不需要 ):
uvbash
python3 <SKILL_DIR>/scripts/new_project.py \
--name "Nombre del Proyecto" \
--path ./nombre-del-proyecto \
--description "Descripción breve del proyecto." \
--git作者和 owner 会自动推导:/--author来自/git config user.name,user.email来自--owner。你也可以通过参数手动覆盖。git config github.user
常用选项:
| 选项 | 效果 |
|---|---|
| 项目的易读名称(必填)。 |
| 目标文件夹(默认为 |
| GitHub 仓库名称(默认为项目名称转换后的 slug)。 |
| GitHub 账户或组织(默认为 |
| 单行描述(写入 README、pyproject 和章程)。 |
| 作者信息(默认为 |
| Python 版本(默认为 |
| 应用项目(无 package 和 build-system),而不是 src-layout。 |
| 仅保留必要内容:不包含 |
| 在 README 中包含项目架构(Archify)章节,并在章程中加入对应条目。 |
| 从依赖、Makefile 和文档中移除 |
| 不生成 |
| 不生成 |
| 初始化 git 仓库( |
| 完成后执行 |
| 覆盖现有文件。 |
| 展示将要执行的操作,但不写入任何内容。 |
| 仅审计现有项目(FALTA/DIFIERE/OK),不写入任何内容;同时推断仓库上下文。 |
⚠️ 覆盖之前: 如果目标文件夹已经包含文件(尤其是你自己的或CONSTITUTION.md),不要盲目使用README.md。应先调查并阅读现有内容,然后合并,而不是替换。--force
Paso 2 · Poblar la constitución
第 2 步 · 填充章程
Abre y completa, como mínimo, las secciones marcadas con :
CONSTITUTION.md<!-- ... -->- Propósito y no-propósito (una o dos frases cada uno).
- Alcance (qué entra y qué no).
- Stack técnico (confirma o corrige la tabla).
- Decisiones iniciales en el historial (fecha + decisión + motivo).
- Notas y tareas pendientes (roadmap en formato checklist).
打开 ,至少填写所有以 标记的部分:
CONSTITUTION.md<!-- ... -->- 目的和非目标(各一至两句话)。
- 范围(包含什么,不包含什么)。
- 技术栈(确认或修正表格)。
- 历史记录中的初始决策(日期 + 决策 + 原因)。
- 备注和待办事项(采用 checklist 格式的 roadmap)。
Paso 3 · Verificar el entorno
第 3 步 · 验证环境
bash
cd nombre-del-proyecto
uv sync
uv run pre-commit install
make check # lint + formato + pruebasbash
cd nombre-del-proyecto
uv sync
uv run pre-commit install
make check # lint + formato + pruebasPaso 4 · Conectar a GitHub
第 4 步 · 接入 GitHub
Crea el repositorio (si no existe) y publica:
bash
gh repo create <tu-usuario>/<repo> --private --source=. --remote=origin --push创建仓库(如果尚不存在)并发布:
bash
gh repo create <tu-usuario>/<repo> --private --source=. --remote=origin --pusho, si el repo ya existe:
o, si el repo ya existe:
git remote add origin git@github.com:<tu-usuario>/<repo>.git
git push -u origin main
Luego protege `main` y verifica que la CI esté en verde. Detalle en
[`references/github.md`](references/github.md).git remote add origin git@github.com:<tu-usuario>/<repo>.git
git push -u origin main
随后保护 `main` 分支,并确认 CI 全部通过。详细信息参见 [`references/github.md`](references/github.md)。Paso 5 · Diagrama de arquitectura (opcional, Archify)
第 5 步 · 架构图(可选,使用 Archify)
Si el proyecto necesita un mapa de arquitectura en el README (documentación viva), instala
la skill Archify y genera el diagrama:
bash
npx skills add tt-a1i/archify -g如果项目需要在 README 中提供架构图(作为持续维护的活文档),请安装 Archify skill 并生成图表:
bash
npx skills add tt-a1i/archify -gLuego, en el chat:
Luego, en el chat:
"Analiza este repositorio y usa Archify para crear un diagrama de arquitectura de
"Analiza este repositorio y usa Archify para crear un diagrama de arquitectura de
runtime. 8–12 componentes, un camino principal, dependencias externas y límites."
runtime. 8–12 componentes, un camino principal, dependencias externas y límites."
El resultado queda en `docs/arquitectura.json` (fuente versionada) y `docs/arquitectura.html`
(artefacto interactivo), y se enlaza desde el README. **No** se edita el HTML a mano:
se regenera con `deliver`. Detalle completo en [`references/archify.md`](references/archify.md).
---
结果会保存在 `docs/arquitectura.json`(纳入版本控制的源文件)和 `docs/arquitectura.html`(交互式产物)中,并从 README 链接。**不要**手动编辑 HTML;应使用 `deliver` 重新生成。完整说明参见 [`references/archify.md`](references/archify.md)。
---Modo B — Mejorar un proyecto existente (no destructivo)
模式 B — 改进现有项目(非破坏性)
Contrato de no destrucción. El objetivo no es reemplazar, es completar y elevar. Un repo con historia,oREADME.mdpropios es trabajo del usuario: se lee, respeta y mejora; nunca se borra ni se sobrescribe conCONSTITUTION.mda ciegas.--force
- Audita sin tocar nada (captura el contexto del propio repo):
Leebash
python3 <SKILL_DIR>/scripts/new_project.py --path . --audit,pyproject.toml,.python-versiony el remoto de git, y reporta FALTA / DIFIERE / OK.CONSTITUTION.mdpuede ser personalización legítima: revísala.DIFIERE - Lee ,
README.mdy la estructura real antes de cambiar nada.CONSTITUTION.md - Propón un plan (qué se añade, qué se completa) y aplícalo de forma aditiva:
Sinbash
python3 <SKILL_DIR>/scripts/new_project.py --path . --name "..." --description "...", el scaffolder omite todo archivo que ya existe (solo crea lo que falta).--force - Fusiona los a mano: conserva el contenido del usuario y añade lo que falte (no reemplaces secciones; no borres lo propio).
DIFIERE - Migra solo si el usuario lo pide: →
requirements.txtconpyproject.toml; scripts sueltos →uv add;src/<paquete>/→.ipynb..py - Registra el cambio en el historial de la constitución y verifica con .
make check
Eles la herramienta para "capturar más contexto": puedes correrlo las veces que quieras sin efectos secundarios, incluso en repos grandes, y mostrar el informe antes de proponer cambios.--audit
不破坏性契约。 目标不是替换,而是补全和提升。拥有历史记录、自有或README.md的仓库属于用户:应当阅读、尊重并改进;绝不能删除文件,也不能盲目使用CONSTITUTION.md覆盖。--force
- 不进行任何修改地审计(捕获仓库自身的上下文):
读取bash
python3 <SKILL_DIR>/scripts/new_project.py --path . --audit、pyproject.toml、.python-version和 git remote,并报告 FALTA / DIFIERE / OK。CONSTITUTION.md也可能是合理的个性化设置:请审查确认。DIFIERE - 在修改任何内容之前,阅读 、
README.md和真实目录结构。CONSTITUTION.md - 提出计划(需要添加和补全哪些内容),然后以增量方式应用:
不使用bash
python3 <SKILL_DIR>/scripts/new_project.py --path . --name "..." --description "..."时,脚手架工具会省略所有已经存在的文件,仅创建缺失内容。--force - 手动合并 : 保留用户内容并补充缺失部分(不要替换章节,也不要删除用户自己的内容)。
DIFIERE - 仅在用户明确要求时进行迁移:使用 将
uv add迁移到requirements.txt;将零散脚本迁移到pyproject.toml;将src/<paquete>/迁移为.ipynb。.py - 在章程历史记录中登记此次变更,并使用 进行验证。
make check
是用于“获取更多上下文”的工具:可以运行任意多次且不会产生副作用,即使面对大型仓库也是如此。应在提出变更方案前展示审计报告。--audit
Manifiesto de archivos del estándar
标准文件清单
| Archivo | Propósito |
|---|---|
| Fuente única de verdad: propósito, stack, estructura, convenciones, flujo y decisiones. |
| Puerta de entrada pública: badges, TOC, descripción, stack, primeros pasos, estructura, contribución, licencia. |
| Metadatos, dependencias ( |
| Lockfile determinista (versionado). |
| Versión de Python fijada ( |
| Ignora venvs, cachés, secretos, artefactos pesados y datos. |
| Convenciones de estilo entre editores. |
| Interfaz de comandos ( |
| Higiene de archivos + Ruff + |
| MIT por defecto. |
| Entorno, ramas, estándares, commits y proceso de PR. |
| Contributor Covenant 2.1 (proyectos con colaboración). |
| Contexto para agentes LLM (stack, flujo, reglas, tgrep). |
| Regla de búsqueda con |
| Plantilla de PR (Conventional Commits + checklist). |
| Formularios de bug, funcionalidad e investigación (spike). |
| CI: pre-commit + pruebas. |
| Sincroniza labels desde |
| Fuente única de las etiquetas del repositorio. |
| Actualización automática de dependencias ( |
| Código del paquete (src-layout). |
| Pruebas con pytest (patrón AAA). |
| Documentación, ADRs, spikes e investigación. |
| Diagrama interactivo de arquitectura (Archify); el JSON es la fuente. Ver |
| 文件 | 用途 |
|---|---|
| 唯一事实来源:目的、技术栈、结构、约定、流程和决策。 |
| 面向公众的入口:徽章、目录、描述、技术栈、初始步骤、目录结构、贡献指南和许可证。 |
| 元数据、依赖( |
| 确定性的 lockfile(纳入版本控制)。 |
| 固定的 Python 版本( |
| 忽略 venv、缓存、机密信息、大型产物和数据集。 |
| 跨编辑器统一代码风格。 |
| 命令接口( |
| 每次 commit 前执行文件检查、Ruff 和 |
| 默认采用 MIT。 |
| 环境、分支、标准、commit 和 PR 流程。 |
| Contributor Covenant 2.1(适用于协作项目)。 |
| 为 LLM Agent 提供上下文(技术栈、流程、规则、tgrep)。 |
| OpenCode Agent 使用 tgrep 进行搜索的规则。 |
| PR 模板(Conventional Commits + checklist)。 |
| bug、功能和调查(spike)表单。 |
| CI:pre-commit + 测试。 |
| 根据 |
| 仓库 labels 的唯一事实来源。 |
| 自动更新依赖( |
| package 代码(src-layout)。 |
| pytest 测试(AAA 模式)。 |
| 文档、ADR、spike 和研究记录。 |
| 交互式架构图(Archify);JSON 是源文件。参见 |
Variables de las plantillas
模板变量
Las plantillas bajo usan marcadores que el scaffolder sustituye.
Si editas a mano, reemplázalos todos:
assets/templates/| Marcador | Significado |
|---|---|
| Nombre legible ( |
| Identificador kebab-case ( |
| Identificador snake_case ( |
| Descripción de una línea. |
| Cuenta y nombre del repositorio. |
| URLs HTTPS y SSH del repositorio. |
| Autoría. |
| Versión de Python ( |
| Año y fecha ISO. |
Bloques condicionales (se eliminan si la bandera es falsa):
(src-layout), (),
, .
{{#if PACKAGE}}…{{/if}}{{#if TYPES}}…{{/if}}ty{{#if GITHUB}}…{{/if}}{{#if AGENTS}}…{{/if}}assets/templates/| 标记 | 含义 |
|---|---|
| 易读名称( |
| kebab-case 标识符( |
| snake_case 标识符( |
| 单行描述。 |
| 仓库所属账户和仓库名称。 |
| 仓库的 HTTPS 和 SSH URL。 |
| 作者姓名和邮箱。 |
| Python 版本( |
| 年份和 ISO 日期。 |
条件块(当对应参数为 false 时会被删除):
(src-layout)、()、
、。
{{#if PACKAGE}}…{{/if}}{{#if TYPES}}…{{/if}}ty{{#if GITHUB}}…{{/if}}{{#if AGENTS}}…{{/if}}Documentación de apoyo
支持文档
Carga estos archivos solo cuando los necesites (divulgación progresiva):
| Referencia | Contenido |
|---|---|
| Anatomía completa del |
| |
| Creación del repo, remotos SSH, badges, plantillas, CI, Dependabot, labels, ramas. |
| |
| Identidad Git automática ( |
| Diagramas de arquitectura interactivos con Archify (instalación, tipos, validate/deliver, README). |
| Presentaciones con Slidev (proyectos de curso): monolito, hub, reglas de sintaxis, export. |
仅在需要时加载以下文件(渐进式披露):
| 参考文档 | 内容 |
|---|---|
| 逐节介绍 |
| |
| 创建仓库、SSH remote、徽章、模板、CI、Dependabot、labels 和分支。 |
| |
| 自动 Git 身份( |
| 使用 Archify 创建交互式架构图(安装、类型、validate/deliver、README)。 |
| 使用 Slidev 制作演示文稿(课程项目):monolith、hub、语法规则和导出。 |
Identidad Git automática (includeIf
)
includeIf自动 Git 身份(includeIf
)
includeIfConfigura Git para que todo repositorio bajo una carpeta use automáticamente un nombre,
un correo y una llave SSH. Es una de las piezas más útiles del estándar: elimina flags y
por proyecto. Hay dos perfiles y el agente debe decidir cuál aplica
(detalle en ).
gh authreferences/git-identity.md配置 Git,使指定文件夹下的所有仓库自动使用同一个姓名、邮箱和 SSH 密钥。这是该标准中最实用的组成部分之一:无需再为每个项目设置参数和执行 。该机制包含两种配置,Agent 必须判断适用哪一种(详情参见 )。
gh authreferences/git-identity.mdPerfil A — Ejemplo (configuración del autor de la skill)
配置 A — 示例(skill 作者的配置)
Es solo un ejemplo real de un perfil funcionando. Cualquier otro usuario sigue el Perfil B con sus propios datos.
Carpeta canónica de ejemplo :
~/Desktop/Repositorios/personal/ini
undefined这只是一个真实可运行的配置示例。其他用户应使用配置 B 并填写自己的数据。
示例规范文件夹 :
~/Desktop/Repositorios/personal/ini
undefined~/.gitconfig
~/.gitconfig
[includeIf "gitdir:~/Desktop/Repositorios/personal/"]
path = ~/.gitconfig-personal
```ini[includeIf "gitdir:~/Desktop/Repositorios/personal/"]
path = ~/.gitconfig-personal
```ini~/.gitconfig-personal
~/.gitconfig-personal
[user]
name = Jan Polanco V.
email = hamsomp3@gmail.com
[core]
sshCommand = ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes
**Efecto:** todo repo bajo esa carpeta usa el nombre, correo y llave del ejemplo. Preferir
remotos **SSH** (`git@github.com:<tu-usuario>/<repo>.git`); HTTPS puede resolver con un token
de otra cuenta.[user]
name = Jan Polanco V.
email = hamsomp3@gmail.com
[core]
sshCommand = ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes
**效果:** 该文件夹下的所有仓库都会使用示例中的姓名、邮箱和密钥。优先使用 **SSH** remote(`git@github.com:<tu-usuario>/<repo>.git`);HTTPS 可以使用其他账户的 token 进行身份验证。Perfil B — Cualquier otro usuario (alumno, compañero)
配置 B — 其他所有用户(学生、同事等)
Si el usuario pide identidad automática y no comparte el perfil de ejemplo, pregúntale
primero su nombre, correo, llave SSH y carpeta de proyectos, y luego configura
en su carpeta y su sistema operativo (macOS o Windows). Script listo:
includeIfbash
python3 <SKILL_DIR>/scripts/setup_git_identity.py \
--name "Pedro Pérez" --email pedro@example.com \
--key ~/.ssh/id_ed25519 --dir ~/Repos/personal --platform mac如果用户要求自动身份配置,并且不使用示例中的配置,应先询问其姓名、邮箱、SSH 密钥和项目文件夹,然后针对其文件夹和其操作系统(macOS 或 Windows)配置 。可以使用现成脚本:
includeIfbash
python3 <SKILL_DIR>/scripts/setup_git_identity.py \
--name "Pedro Pérez" --email pedro@example.com \
--key ~/.ssh/id_ed25519 --dir ~/Repos/personal --platform macWindows: --key C:/Users/pedro/.ssh/id_ed25519 --dir C:/Users/pedro/Repos --platform windows
Windows: --key C:/Users/pedro/.ssh/id_ed25519 --dir C:/Users/pedro/Repos --platform windows
El script respalda `~/.gitconfig`, es idempotente y tiene un modo `--print` que solo muestra
los bloques sin escribir nada. Pasos manuales y gotchas (orden de `includeIf`, `gitdir/i:`,
rutas con `/` en Windows, `IdentitiesOnly`) en [`references/git-identity.md`](references/git-identity.md).
> ⚙️ **Nunca** se commitea: es configuración **local de la máquina**. Vive en la constitución
> solo **como nota** (no como archivo del repo), y **solo se aplica si el usuario lo pide**.
---
该脚本会备份 `~/.gitconfig`,具备幂等性,并提供 `--print` 模式,仅展示配置块而不写入任何内容。手动配置步骤和注意事项(`includeIf` 顺序、`gitdir/i:`、Windows 中带 `/` 的路径、`IdentitiesOnly`)参见 [`references/git-identity.md`](references/git-identity.md)。
> ⚙️ **绝不提交:** 这是**机器本地配置**。在章程中仅可将其记录为**备注**(而不是仓库文件),并且**仅在用户要求时**应用。
---Flujo diario (commit + push)
日常流程(commit + push)
bash
git status # 1. ver cambios
make check # 2. lint + formato + (tipos) + pruebas
git add -A # 3. agregar
git commit -m "tipo: mensaje" # 4. commitear (los hooks se ejecutan solos)
git push # 5. subirbash
git status # 1. ver cambios
make check # 2. lint + formato + (tipos) + pruebas
git add -A # 3. agregar
git commit -m "tipo: mensaje" # 4. commitear (los hooks se ejecutan solos)
git push # 5. subirChecklist de verificación
验证 Checklist
Antes de dar por terminado un proyecto o un cambio:
- existe y está poblado (propósito, stack, estructura, flujo, decisiones).
CONSTITUTION.md - funciona y
uv syncestá versionado.uv.lock - pasa en verde (lint + formato + pruebas).
make check - pasa (hooks instalados).
uv run pre-commit run --all-files - tiene badges, TOC, descripción, stack, primeros pasos y licencia.
README.md - presente (MIT por defecto).
LICENSE - con PR template, issue templates, CI, Dependabot y labels (si aplica).
.github/ - (y
AGENTS.md) describen el proyecto para agentes (si aplica)..opencode/rules/tgrep.md - Identidad Git automática configurada si el usuario lo pidió (perfil A para Jan / perfil B para otros).
- Diagrama de arquitectura con Archify en y enlazado desde el README (si aplica).
docs/ - Sin secretos, datos personales ni artefactos pesados versionados.
- El historial de decisiones de la constitución registra los cambios significativos.
在将项目或变更标记为完成之前:
- 已存在并完成填充(目的、技术栈、结构、流程、决策)。
CONSTITUTION.md - 可以正常运行,且
uv sync已纳入版本控制。uv.lock - 全部通过(lint + 格式化 + 测试)。
make check - 通过(hooks 已安装)。
uv run pre-commit run --all-files - 包含徽章、目录、描述、技术栈、初始步骤和许可证。
README.md - 已提供 (默认采用 MIT)。
LICENSE - 包含 PR 模板、issue 模板、CI、Dependabot 和 labels(如适用)。
.github/ - (以及
AGENTS.md)已向 Agent 描述项目(如适用)。.opencode/rules/tgrep.md - 已配置自动 Git 身份**(仅当用户要求时)**(Jan 使用配置 A,其他用户使用配置 B)。
- 架构图已通过 Archify 生成并保存在 中,同时已从 README 链接(如适用)。
docs/ - 未将机密信息、个人数据或大型产物纳入版本控制。
- 章程中的决策历史记录了所有重要变更。
Directiva de mantenimiento
维护指令
Cada vez que se realicen cambios significativos (nuevas funcionalidades, cambios arquitectónicos, adición de clases/módulos o ajustes de tecnologías), se debe actualizaren el mismo commit para mantener la verdad central del proyecto. El checklist de la plantilla de Pull Request lo verifica explícitamente.CONSTITUTION.md
每当进行重要变更(新增功能、架构调整、添加 class/module 或调整技术选型)时,必须在同一次 commit 中更新,以维护项目的唯一事实来源。Pull Request 模板中的 checklist 会明确检查此项。CONSTITUTION.md