Skip to content

feat(scaffold): ship team VSCode extension + settings recommendations#95

Merged
qjrm1430 merged 5 commits into
mainfrom
feat/scaffold-vscode-recommendations
May 27, 2026
Merged

feat(scaffold): ship team VSCode extension + settings recommendations#95
qjrm1430 merged 5 commits into
mainfrom
feat/scaffold-vscode-recommendations

Conversation

@qjrm1430
Copy link
Copy Markdown
Member

🚀 PR Type

  • 🎯 Ready for Review — verified by regenerating with act new and inspecting the rendered .vscode/.

📝 Summary

act new로 생성되는 모든 신규 프로젝트가 팀 표준 VSCode 추천(필수 익스텐션 5종 + ruff/pytest 자동 활성화 설정)을 즉시 받도록 scaffold에 .vscode/extensions.json.vscode/settings.json을 추가.

📄 Description

1. .vscode/extensions.json

이 템플릿의 도구 체인(uv / ruff / pytest / langgraph / Mermaid CLAUDE.md)에 직접 결합된 5개를 recommendations로 둠. 새 멤버가 프로젝트를 열면 VSCode가 자동 "Install Recommended Extensions" 알림 표시.

Extension ID 왜 필수인가
ms-python.python Python LSP/디버거; Pylance 자동 동봉, [tool.pyright] 설정과 통합
charliermarsh.ruff [tool.ruff] / .pre-commit-config.yaml의 ruff hook과 1:1 매칭
tamasfe.even-better-toml pyproject.toml, casts/*/pyproject.toml 편집/검증
redhat.vscode-yaml .pre-commit-config.yaml, .github/workflows/*.yml 편집/검증
bierner.markdown-mermaid architecting-act 스킬이 생성하는 CLAUDE.md Mermaid 다이어그램 프리뷰

unwantedRecommendations로 black/isort/flake8/pylint 명시적 제외 → 신규 멤버가 잘못 설치해서 ruff와 포맷 충돌 나는 사고 차단.

2. .vscode/settings.json

  • Format on save (ruff) + source.fixAll.ruff + source.organizeImports.ruff → pre-commit 실패 사전 방지
  • pytest 활성화, testpaths = ["tests"] 자동 인식
  • Pyright basic mode ([tool.pyright]의 include와 정합)
  • 캐시/venv 디렉토리 explorer·search에서 숨김

3. .gitignore 업데이트

기존 .vscode/ blanket ignore가 위 두 파일까지 무시했음. 다음 패턴으로 변경:

- # IDE settings
- .vscode/
+ # IDE settings — track team-shared VSCode config, ignore everything else
+ .vscode/*
+ !.vscode/extensions.json
+ !.vscode/settings.json

개인 환경 파일(launch.json, tasks.json, *.code-workspace)은 계속 무시.

검증:

$ git check-ignore -v .vscode/extensions.json   → not ignored (tracked)
$ git check-ignore -v .vscode/settings.json     → not ignored (tracked)
$ git check-ignore -v .vscode/launch.json       → .gitignore:.vscode/* ✓

✅ Quality Checks

  • act new로 신규 프로젝트 생성 시 .vscode/extensions.json + .vscode/settings.json 정상 출력 확인
  • 생성된 프로젝트에서 git init && git add . 시 두 파일 tracked, launch.json 등은 ignored

💪 Ownership

  • Hand-raise: VSCode 외 IDE(예: PyCharm/Cursor) 사용 팀의 호환성 모니터링

💡 Notes

  • Cursor 호환: Cursor는 .vscode/extensions.json/settings.json을 동일 형식으로 읽음 — 추가 작업 불필요
  • JetBrains: PyCharm/IDEA는 이 파일을 사용하지 않음. JetBrains 사용 팀은 별도 .idea/(이미 ignore됨)로 관리
  • 권장(미포함) 익스텐션: 팀 표준이 갈리는 항목(GitLens, GitHub PRs, Spell Checker, Anthropic Claude Code)은 의도적으로 제외해 강제성 최소화. 필요한 팀은 PR로 recommendations에 추가 가능

🤖 Generated with Claude Code

Add `.vscode/extensions.json` and `.vscode/settings.json` to the
scaffold so every project generated with `act new` ships with the
toolchain-aligned IDE setup the template already assumes.

extensions.json — required (5):
- ms-python.python          : Python LSP + debugger (Pylance bundled)
- charliermarsh.ruff        : matches [tool.ruff] + the ruff pre-commit hook
- tamasfe.even-better-toml  : pyproject.toml editing/validation
- redhat.vscode-yaml        : .pre-commit-config.yaml + GH workflows
- bierner.markdown-mermaid  : Mermaid preview for architecting-act's CLAUDE.md

extensions.json — unwantedRecommendations:
Explicitly block black/isort/flake8/pylint so new members do not
introduce formatters that conflict with ruff.

settings.json:
- Format on save with ruff + fix + organize imports on save
- pytest as the test runner, rooted at tests/
- Pyright basic mode (project uses `[tool.pyright]`)
- Hide cache / venv directories from explorer and search

.gitignore update:
The previous `.vscode/` blanket ignore would have masked these
team-shared files. Switched to `.vscode/*` plus negations for
extensions.json and settings.json — personal launch.json / tasks.json
remain ignored. Verified with `git check-ignore`:
  .vscode/extensions.json  → tracked
  .vscode/settings.json    → tracked
  .vscode/launch.json      → ignored

Verified end-to-end by regenerating a project with `act new` and
inspecting the resulting `.vscode/`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request updates the scaffold template to track team-shared VSCode configurations while ignoring other IDE files. It adds recommended extensions and default settings for Ruff, TOML, and YAML formatting. A review comment suggests changing "python.testing.pytestArgs" to an empty array to prevent potential test execution issues in the VSCode Test Explorer when individual tests are run.

qjrm1430 and others added 4 commits May 27, 2026 12:53
Web research surfaced three more extensions that each map 1:1 to an
artifact this template already ships:

- hediet.vscode-drawio
  drawkit.xml (and drawkit_en.xml / drawkit_kr.xml in source) is a
  draw.io <mxlibrary>. Without this extension VSCode shows it as
  raw XML; with it, the file opens in the diagrams.net editor.

- github.vscode-github-actions
  Three workflows ship in .github/workflows/ (pr_lint.yml, ruff.yml,
  uv_lock_upgrade.yml). The official extension validates against the
  Actions schema, autocompletes expressions, and surfaces job/step
  references — strictly more than the generic redhat.vscode-yaml.

- mikestead.dotenv
  .env.example ships and users create .env locally. 1M+ install,
  zero-config syntax highlighting.

LangGraph Visualizers (smazee.langgraph-visualizer) was evaluated but
intentionally excluded for this round — the extension is at 0.3.x and
LangGraph CLI / LangSmith Studio already provide a more authoritative
graph view.

No settings.json association for drawkit.xml — `*.xml` glob is too
broad to safely force the drawio editor; users right-click → Open
With → Draw.io on demand.

Verified by regenerating with `act new`; `.vscode/extensions.json`
renders with all eight recommendations.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add six settings.json entries that map to this template's existing
toolchain so freshly scaffolded projects need no manual VSCode setup
beyond `Install Recommended Extensions`.

File hygiene (matches what ruff and pre-commit will enforce anyway —
just catches it at the editor so the loop is tighter):
- files.trimTrailingWhitespace = true
- files.insertFinalNewline     = true
- files.trimFinalNewlines      = true

Python toolchain:
- editor.rulers = [88]
    Visual guide at ruff/Black default. The template ignores E501
    so this is non-blocking — informational only.
- python.defaultInterpreterPath = "${workspaceFolder}/.venv/bin/python"
    `uv sync` writes the venv to .venv; pin so the IDE picks it up
    without a `Select Interpreter` prompt on first open.
- python.testing.autoTestDiscoverOnSaveEnabled = true
    Pair with the existing `pytest.enabled` / `pytestArgs=["tests"]`
    so new tests show up in the side panel as soon as they are saved.

Skipped after evaluation:
- langgraph.json JSON schema (not on SchemaStore; no public schema)
- editor.tabSize (ruff handles Python; setting it globally bleeds
  into other languages)
- files.eol "\n" (only useful if the team has Windows members)

Verified by regenerating with `act new`: .vscode/settings.json
renders with all entries intact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…/.vscode/settings.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@qjrm1430 qjrm1430 merged commit e106ada into main May 27, 2026
3 checks passed
@qjrm1430 qjrm1430 deleted the feat/scaffold-vscode-recommendations branch May 27, 2026 04:03
@qjrm1430 qjrm1430 linked an issue May 27, 2026 that may be closed by this pull request
6 tasks
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.

feat: vscode extension set-up

1 participant