Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
130bd93
feat: add Gitea support as third-party Git provider
claude Jun 16, 2026
7648eef
fix: use two-step branch→SHA resolution in GiteaService.listFiles
claude Jun 16, 2026
6afeaf6
chore: update package-lock.json
claude Jun 16, 2026
615819c
docs: update USAGE_zh.md with Gitea support and provider compatibilit…
claude Jun 16, 2026
8024939
ci: remove SonarQube from CI/CD pipeline
claude Jun 16, 2026
c2c5dd5
ci: upload build artifact on non-main branches for testing
claude Jun 16, 2026
21a6f98
ci: update GitHub Actions to latest versions
claude Jun 16, 2026
8eb5903
ci: fix artifact name by sanitizing branch name slashes
claude Jun 16, 2026
e4d72e0
ci: upgrade actions to Node 24 compatible versions
claude Jun 16, 2026
bcc5cda
fix(services): clear error when Git API returns HTML instead of JSON
claude Jun 26, 2026
339d5cb
fix(services): omit blank sha so creating a new file doesn't 422
claude Jun 26, 2026
d8d6f9d
refactor(ui): unify Sync Status icons via Lucide setIcon
claude Jun 26, 2026
76405cf
fix(sync): fall back to adapter read for symlinked files
claude Jun 26, 2026
f2037f9
ci: drop removed skip-sonar input and SONAR_TOKEN secret
claude Jun 27, 2026
9bc8ab7
fix(ui): match Open sync status ribbon icon to the view icon
claude Jun 28, 2026
c474a7e
fix(services): stop logging expected 404s as errors during refresh
claude Jun 28, 2026
62b475d
feat(sync): detect symbolic links and add a configurable handling set…
claude Jun 28, 2026
9098126
Merge remote-tracking branch 'origin/claude/git-files-sync-issue-31-5…
claude Jun 28, 2026
13d802e
Merge pull request #35 from firstsun-dev/claude/trusting-volta-qlg8bk
ClaudiaFang Jun 28, 2026
9bcaed6
feat(sync): real symbolic link support (GitHub) with configurable han…
claude Jun 28, 2026
1e21061
perf(ui): parallelize refresh status checks and throttle re-renders
claude Jun 28, 2026
2f6859a
fix(sync): clearer branch-not-found errors and connection test
Jul 5, 2026
1364b94
fix(sync): stop batch push/pull from silently overwriting conflicts
Jul 5, 2026
acebafd
fix(ui): keep ribbon/command labels in sync with configured Git service
Jul 5, 2026
d11ca94
fix(lint): resolve Obsidian plugin linter warnings
Jul 5, 2026
1111308
chore(skills): install clean-code, design-taste-frontend, frontend-de…
Jul 5, 2026
235d9e0
fix(settings): mask personal access token fields
Jul 5, 2026
5c64b96
fix(deprecations): migrate off deprecated Obsidian APIs
Jul 5, 2026
06953e1
fix(sync): stop false-positive rename detection and 422 on rename push
Jul 5, 2026
e89f6ba
chore(release): bump minAppVersion to 1.13.0 and version to 1.2.0
Jul 5, 2026
a47cfcb
fix(deps): resolve Dependabot security alerts in dev dependencies
Jul 5, 2026
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
94 changes: 94 additions & 0 deletions .agents/skills/clean-code/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
name: clean-code
description: Apply Robert C. Martin's Clean Code principles (naming, functions, comments, formatting, error handling, tests, classes, code smells). Use when writing new code, reviewing pull requests, refactoring legacy code, or aligning on team coding standards.
---

# Clean Code Skill

## 🧠 Core Philosophy
> "Code is clean if it can be read, and enhanced by a developer other than its original author." — Grady Booch

## When to Use
Use this skill when:
- **Writing new code**: To ensure high quality from the start.
- **Reviewing Pull Requests**: To provide constructive, principle-based feedback.
- **Refactoring legacy code**: To identify and remove code smells.
- **Improving team standards**: To align on industry-standard best practices.

## 1. Meaningful Names
- **Use Intention-Revealing Names**: `elapsedTimeInDays` instead of `d`.
- **Avoid Disinformation**: Don't use `accountList` if it's actually a `Map`.
- **Make Meaningful Distinctions**: Avoid `ProductData` vs `ProductInfo`.
- **Use Pronounceable/Searchable Names**: Avoid `genymdhms`.
- **Class Names**: Use nouns (`Customer`, `WikiPage`). Avoid `Manager`, `Data`.
- **Method Names**: Use verbs (`postPayment`, `deletePage`).

## 2. Functions
- **Small!**: Functions should be shorter than you think.
- **Do One Thing**: A function should do only one thing, and do it well.
- **One Level of Abstraction**: Don't mix high-level business logic with low-level details (like regex).
- **Descriptive Names**: `isPasswordValid` is better than `check`.
- **Arguments**: 0 is ideal, 1-2 is okay, 3+ requires a very strong justification.
- **No Side Effects**: Functions shouldn't secretly change global state.

## 3. Comments
- **Don't Comment Bad Code—Rewrite It**: Most comments are a sign of failure to express ourselves in code.
- **Explain Yourself in Code**:
```python
# Check if employee is eligible for full benefits
if employee.flags & HOURLY and employee.age > 65:
```
vs
```python
if employee.isEligibleForFullBenefits():
```
- **Good Comments**: Legal, Informative (regex intent), Clarification (external libraries), TODOs.
- **Bad Comments**: Mumbling, Redundant, Misleading, Mandated, Noise, Position Markers.

## 4. Formatting
- **The Newspaper Metaphor**: High-level concepts at the top, details at the bottom.
- **Vertical Density**: Related lines should be close to each other.
- **Distance**: Variables should be declared near their usage.
- **Indentation**: Essential for structural readability.

## 5. Objects and Data Structures
- **Data Abstraction**: Hide the implementation behind interfaces.
- **The Law of Demeter**: A module should not know about the innards of the objects it manipulates. Avoid `a.getB().getC().doSomething()`.
- **Data Transfer Objects (DTO)**: Classes with public variables and no functions.

## 6. Error Handling
- **Use Exceptions instead of Return Codes**: Keeps logic clean.
- **Write Try-Catch-Finally First**: Defines the scope of the operation.
- **Don't Return Null**: It forces the caller to check for null every time.
- **Don't Pass Null**: Leads to `NullPointerException`.

## 7. Unit Tests
- **The Three Laws of TDD**:
1. Don't write production code until you have a failing unit test.
2. Don't write more of a unit test than is sufficient to fail.
3. Don't write more production code than is sufficient to pass the failing test.
- **F.I.R.S.T. Principles**: Fast, Independent, Repeatable, Self-Validating, Timely.

## 8. Classes
- **Small!**: Classes should have a single responsibility (SRP).
- **The Stepdown Rule**: We want the code to read like a top-down narrative.

## 9. Smells and Heuristics
- **Rigidity**: Hard to change.
- **Fragility**: Breaks in many places.
- **Immobility**: Hard to reuse.
- **Viscosity**: Hard to do the right thing.
- **Needless Complexity/Repetition**.

## 🛠️ Implementation Checklist
- [ ] Is this function smaller than 20 lines?
- [ ] Does this function do exactly one thing?
- [ ] Are all names searchable and intention-revealing?
- [ ] Have I avoided comments by making the code clearer?
- [ ] Am I passing too many arguments?
- [ ] Is there a failing test for this change?

## Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Loading
Loading