tech-preferences
Original:🇨🇳 Chinese
Translated
Technology preference analysis process. When selecting, planning or recommending technical solutions, analyze preferences first before giving suggestions; meanwhile, deposit newly discovered preferences back to this skill.
3installs
Sourcezrr1999/skills
Added on
NPX Install
npx skill4agent add zrr1999/skills tech-preferencesTags
Translated version includes tags in frontmatterSKILL.md Content (Chinese)
View Translation Comparison →Purpose
Technology preferences cannot be exhaustively listed - it is a process of continuous evolution. This skill provides a preference analysis process to help discover, discuss and solidify preferences in specific tasks.
Current Known Preferences (Baseline)
Python Ecosystem
- Package management: uv (replaces pip/poetry/pyenv)
- Code quality: ruff (lint + format), ty (type check)
- Pre-commit/CI hooks: prek (replaces pre-commit)
- Automatic dependency upgrade: Renovate
- Data model: dataclasses (preferred, native zero dependency); introduce Pydantic v2 only when runtime validation or serialization is required
Web Backend
- Framework: FastAPI (async-first, automatic OpenAPI documentation)
- Input validation/serialization (API boundary): Pydantic v2
Web Frontend
- Framework: Svelte (lightweight, compile-time optimization, no runtime vdom)
- Build tool: Vite
System / Automation
- Task running: just (replaces Makefile)
- Containers: Docker / OCI images
- macOS daemon: launchd (do not use cron)
Data Format
- Configuration: TOML (preferred), YAML (CI only), JSON (API exchange)
- Text format: Markdown (documentation), structured logs prefer JSON
Preference Analysis Process
When encountering technology selection, analyze according to the following steps:
- Identify decision points — Clarify the technical dimension to be selected (language/framework/tool/data format, etc.).
- Compare with current preferences — Check the "Known Preferences" list above to confirm if there is an existing agreement; follow it by default if any.
- Analyze deviation reasons — If you need to deviate from known preferences, clearly write down the reasons (performance, ecosystem, constraints, etc.).
- Discuss new preferences — If you find new preferences worth solidifying, clearly propose them in the response:
It is recommended to add "X replaces Y, reason: ..." to the tech-preferences skill.
- Initiate proposal independently — When there are obvious new additions or changes to preferences, actively submit a preference change proposal in PR/Issue (see format below) without waiting for human prompts.
- Deposit and update — After confirmation by humans, append the new preferences to the "Current Known Preferences" section.
Example Analysis
Scenario: Need to select a testing framework for a new Python project.
- Decision point: Testing framework selection
- Known preference: None (the current baseline does not list testing frameworks)
- Compare candidates: (richest ecosystem, prek integrated by default) vs
pytest(standard library, no extra dependencies)unittest - Analysis: All existing repositories use ;
pytesthook runsprekby default; choosepytestpytest - New preference proposal: pytest (preferred Python testing framework) → Submit proposal to add to the baseline
How to Contribute New Preferences
When there are obvious new additions or changes to preferences, submit a preference change proposal independently, the format is as follows:
偏好提案:将 <新工具/框架> 加入 tech-preferences skill
- 类别:<Python生态 / Web后端 / 前端 / 系统 / 数据格式>
- 替代:<被替代的工具,若有>
- 原因:<具体理由,1-3句>
- 参考:<项目/PR/文档链接,若有>You can directly modify the "Current Known Preferences" section of this skill through PR, or propose in the form of comments in related Issue/PR.