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
Added on

NPX Install

npx skill4agent add zrr1999/skills tech-preferences

SKILL.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:
  1. Identify decision points — Clarify the technical dimension to be selected (language/framework/tool/data format, etc.).
  2. Compare with current preferences — Check the "Known Preferences" list above to confirm if there is an existing agreement; follow it by default if any.
  3. Analyze deviation reasons — If you need to deviate from known preferences, clearly write down the reasons (performance, ecosystem, constraints, etc.).
  4. 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.
  5. 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.
  6. 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.
  1. Decision point: Testing framework selection
  2. Known preference: None (the current baseline does not list testing frameworks)
  3. Compare candidates:
    pytest
    (richest ecosystem, prek integrated by default) vs
    unittest
    (standard library, no extra dependencies)
  4. Analysis: All existing repositories use
    pytest
    ;
    prek
    hook runs
    pytest
    by default; choose
    pytest
  5. 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.