Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: CI

on:
pull_request:
branches: [main]
push:
branches: [main]

permissions:
contents: read
pull-requests: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
name: Lint (pre-commit)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip

- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install pre-commit
run: pip install pre-commit

- name: Run pre-commit
run: pre-commit run --all-files --show-diff-on-failure --color always

pr-title:
name: Lint PR title
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
permissions:
pull-requests: read
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
types: |
feat
fix
docs
refactor
test
chore
style
ci
build
perf
scopes: |
meta
adr
research
product
design
arch
agents
backend
frontend
eval
infra
requireScope: false
subjectPattern: "^[a-z].+[^.]$"
subjectPatternError: |
PR title subject must start with a lowercase letter,
be non-empty, and not end with a period.
Comment on lines +41 to +79
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

amannn/action-semantic-pull-request latest version 2025

💡 Result:

The latest version of amannn/action-semantic-pull-request is v6.1.1, released on August 22, 2025.

Citations:


Update amannn/action-semantic-pull-request to v6.1.1.

The action configuration (types, scopes, subjectPattern) properly enforces Conventional Commits and aligns with project standards. However, v5 is outdated; the latest version is v6.1.1 (released August 22, 2025).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ci.yml around lines 41 - 79, Update the GitHub Action
invocation for the pr-title job to use the newer release by changing the uses
reference from amannn/action-semantic-pull-request@v5 to
amannn/action-semantic-pull-request@v6.1.1; ensure the step under the pr-title
job that sets env/GITHUB_TOKEN and the with inputs (types, scopes, requireScope,
subjectPattern, subjectPatternError) are preserved and remain compatible with
v6.1.1, then run the workflow locally or trigger CI to confirm no input name
changes break the job.

24 changes: 24 additions & 0 deletions .markdownlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# markdownlint rules — see https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
default: true

# Line length — we use tables and long prose; rely on editor soft-wrap
MD013: false

# Inline HTML — allowed (mermaid, details, badges)
MD033: false

# First line should be H1 — we use YAML frontmatter first
MD041: false

# Duplicate heading text allowed under different parent headings
MD024:
siblings_only: true

# Bare URLs allowed (footnotes/references)
MD034: false

# Bold-as-heading allowed for emphasis within lists
MD036: false

# Allow inline code blocks without language in quick notes
MD040: false
40 changes: 40 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Synapse — pre-commit hooks
# Install: pipx install pre-commit && pre-commit install && pre-commit install --hook-type commit-msg
# Update: pre-commit autoupdate
# Run all: pre-commit run --all-files

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-added-large-files
args: ["--maxkb=5000"]
- id: check-merge-conflict
- id: check-yaml
- id: check-json
exclude: ^\.vscode/

- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.17.2
hooks:
- id: markdownlint-cli2

- repo: https://github.com/compilerla/conventional-pre-commit
rev: v3.6.0
hooks:
- id: conventional-pre-commit
stages: [commit-msg]
args:
- --strict
- feat
- fix
- docs
- refactor
- test
- chore
- style
- ci
- build
- perf
Comment on lines +29 to +40
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Type list mismatch with documentation.

The conventional-pre-commit hook allows ci, build, and perf types (lines 38-40), but CONTRIBUTING.md (lines 78-87) only documents feat, fix, docs, refactor, test, chore, and style. This inconsistency may confuse contributors.

📝 Suggested fix: Add missing types to CONTRIBUTING.md

Add to the Type table in CONTRIBUTING.md:

 | `chore` | 설정·의존성·CI 등 유지보수 |
 | `style` | 포맷팅만 |
+| `ci` | CI/CD 파이프라인 변경 |
+| `build` | 빌드 시스템·외부 의존성 변경 |
+| `perf` | 성능 개선 |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.pre-commit-config.yaml around lines 29 - 40, The commit hook args list
includes additional conventional commit types "--strict", "ci", "build", and
"perf" (the args entries: --strict, feat, fix, docs, refactor, test, chore,
style, ci, build, perf) that are not documented in CONTRIBUTING.md; update the
Type table in CONTRIBUTING.md to include the missing types "ci", "build", and
"perf" (and any mention of --strict if relevant) so the documented allowed types
match the args list in .pre-commit-config.yaml and avoid confusion for
contributors.

7 changes: 5 additions & 2 deletions 00_meta/WORKFLOW.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,17 @@ last_updated: 2026-04-24

## Commit / PR 규칙

- **모든 변경은 feature 브랜치 → Pull Request 를 통해 머지**. `main` 직접 커밋 금지.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Potential conflict with existing rule on line 66.

Line 71 states "모든 변경은 feature 브랜치 → Pull Request 를 통해 머지. main 직접 커밋 금지" (all changes via PR, no direct main commits), but line 66 (existing, unchanged) states "오탈자·링크 수정은 main 직접 커밋 허용" (typo/link fixes allowed directly to main). These rules contradict each other.

Consider either:

  1. Removing the exception on line 66 to enforce strict PR-only workflow
  2. Clarifying line 71 to note the typo/link exception
🧰 Tools
🪛 LanguageTool

[grammar] ~71-~71: Ensure spelling is correct
Context: ... / PR 규칙 - 모든 변경은 feature 브랜치 → Pull Request 를 통해 머지. main 직접 커밋 금지. - 커밋 메시지는 [...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@00_meta/WORKFLOW.md` at line 71, Resolve the contradiction between the two
workflow rules by either removing the exception that allows direct commits for
typo/link fixes or clarifying the PR-only rule to explicitly permit that
exception; specifically, update the wording of the rule that reads "모든 변경은
feature 브랜치 → Pull Request 를 통해 머지. `main` 직접 커밋 금지" to append a clear exception
for "오탈자·링크 수정은 `main` 직접 커밋 허용" or delete the exception sentence "오탈자·링크 수정은
`main` 직접 커밋 허용" so both statements are consistent throughout the document.

- 커밋 메시지는 [Conventional Commits](https://www.conventionalcommits.org/) — `type(scope): subject` 형식, **영문**.
- 예: `docs(product): add vision v0.1`, `docs(arch): propose embedding model RFC`
- PR 제목도 같은 형식. 본문에 **무엇을·왜** 변경했는지 기록.
- 자세한 형식·Type·Scope 표는 [CONTRIBUTING](../CONTRIBUTING.md#커밋-메시지-규칙) 참고.
- PR 제목도 같은 형식 (CI 에서 검증). 본문에 **무엇을·왜** 변경했는지 기록.
- [CodeRabbit](https://coderabbit.ai/) 이 PR 을 자동 리뷰. Squash merge 권장.
- 자세한 형식·Type·Scope 표·개발 세팅은 [CONTRIBUTING](../CONTRIBUTING.md) 참고.
- PR 체크리스트:
- [ ] frontmatter 업데이트 (`last_updated`, 필요 시 `status`/`version`)
- [ ] 링크 깨짐 확인
- [ ] 관련 ADR·RFC 교차 참조
- [ ] `pre-commit run --all-files` 통과

## ADR (Architecture Decision Record)

Expand Down
46 changes: 39 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,47 @@ Synapse는 **공개 개발(open development)** 을 지향합니다. 제품 기

작은 수정(오탈자 · 링크)은 바로 PR로 보내주셔도 됩니다.

## 개발 환경 세팅 (최초 1회)

로컬에서 lint 를 자동 검증하려면 pre-commit 을 설치하세요.

```bash
# pipx 권장 — 없으면 pip 로 대체 가능
pipx install pre-commit

# hook 등록 (commit-msg 훅 포함)
pre-commit install
pre-commit install --hook-type commit-msg

# 한 번 전체 실행해 보기
pre-commit run --all-files
```

실행되는 검사:

- **markdownlint-cli2** — 마크다운 스타일 (`.markdownlint.yaml`)
- **conventional-pre-commit** — 커밋 메시지 Conventional Commits 검증
- 공통 위생(trailing whitespace · EOF · YAML 구문 · 대용량 파일 방지)

CI (`.github/workflows/ci.yml`) 에서도 동일한 검사가 PR·main push 마다 실행됩니다.

## Pull Request 가이드

1. **브랜치**를 만들어 작업합니다. 브랜치 이름은 `type/topic` 권장 (예: `docs/vision-v2`, `feat/agent-graph`).
2. 커밋 메시지는 [Conventional Commits](https://www.conventionalcommits.org/) 를 따르며 **영문**으로 작성합니다. 자세한 규칙은 아래 "커밋 메시지 규칙" 섹션.
3. PR을 열 때 아래 체크리스트를 확인해 주세요.
- [ ] 변경한 문서의 `frontmatter` (`last_updated`, 필요 시 `status`·`version`)를 업데이트했나요?
- [ ] 관련 ADR·RFC가 있다면 상호 참조 링크를 추가했나요?
- [ ] 링크 깨짐·마크다운 렌더 오류가 없는지 로컬에서 확인했나요?
- [ ] 개인 식별 정보(PII) 또는 민감 데이터가 포함되지 않았나요?
**모든 변경은 feature 브랜치를 통해 Pull Request 로 머지합니다.** `main` 에 직접 커밋하지 마세요.

1. **브랜치 생성**: 이름은 `type/topic` 권장. 예: `docs/vision-v2`, `feat/agent-graph`, `fix/broken-link`.
2. **커밋**: [Conventional Commits](https://www.conventionalcommits.org/) **영문** 형식. 자세한 규칙은 아래 "커밋 메시지 규칙".
3. **PR 오픈**: 제목도 같은 형식 (CI 에서 자동 검증). 본문 체크리스트를 채워 주세요.
4. **자동 리뷰**: [CodeRabbit](https://coderabbit.ai/) 이 PR 오픈·업데이트 시 자동으로 코멘트를 남깁니다. 크리티컬 이슈는 해결한 뒤 재요청하세요.
5. **머지**: Squash merge 권장 — PR 제목이 `main` 의 커밋 메시지가 됩니다.

### PR 체크리스트

- [ ] 변경한 문서의 `frontmatter` (`last_updated`, 필요 시 `status`·`version`)를 업데이트했나요?
- [ ] 관련 ADR·RFC 가 있다면 상호 참조 링크를 추가했나요?
- [ ] 링크 깨짐·마크다운 렌더 오류가 없는지 로컬에서 확인했나요?
- [ ] 개인 식별 정보(PII) 또는 민감 데이터가 포함되지 않았나요?
- [ ] 로컬에서 `pre-commit run --all-files` 가 통과했나요?

## 커밋 메시지 규칙

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Synapse는 현재 **단일 오너** 가 주도하지만, 작업 단위로 아래
- **질문 / 토론** → [`Discussion` 이슈](../../issues/new?template=discussion.md) 또는 Discussions
- **오탈자 / 링크 / 사실 오류** → [`Doc Fix` 이슈](../../issues/new?template=doc_fix.md) 또는 Pull Request

커밋 메시지([Conventional Commits](https://www.conventionalcommits.org/), 영문)·PR 체크리스트 등 자세한 규칙은 [CONTRIBUTING](CONTRIBUTING.md) 을 참고해 주세요. 모든 상호작용은 [Code of Conduct](CODE_OF_CONDUCT.md) 를 따릅니다.
모든 변경은 **feature 브랜치 → PR** 을 통해 머지됩니다. PR 은 [CodeRabbit](https://coderabbit.ai/) 이 자동으로 리뷰하며, CI 가 pre-commit lint 와 PR 제목 포맷을 검증합니다. 개발 환경 세팅·커밋 메시지 규칙 등 자세한 내용은 [CONTRIBUTING](CONTRIBUTING.md) 을 참고해 주세요. 모든 상호작용은 [Code of Conduct](CODE_OF_CONDUCT.md) 를 따릅니다.

## 라이선스

Expand Down
Loading