Skip to content
Merged
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
7 changes: 6 additions & 1 deletion .ai-workspace/scripts/mktmpdir.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import argparse
import datetime
import secrets
import sys
from pathlib import Path


Expand Down Expand Up @@ -53,7 +54,11 @@ def main() -> None:

relative_path = task_dir.relative_to(base_dir).as_posix()
action = "Created" if created else "Using existing"
print(f"{action} task directory: {relative_path}")
# Status goes to stderr so that `$(mktmpdir.py)` captures the path alone.
# Emitting the prose on stdout made callers create directories literally
# named "Created task directory: .tmp/...".
print(f"{action} task directory: {relative_path}", file=sys.stderr)
print(relative_path)


if __name__ == "__main__":
Expand Down
13 changes: 13 additions & 0 deletions GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ Skills activate on their own — you just get better results. They live in `skil
| `refactoring-patterns` | Measurement-driven refactoring — profile before, measure after, keep only if metrics improve. Bulk mode for 10+ files. | When you say "refactor", "clean up", or code has high complexity |
| `verification-loop` | Unified engine behind `/verify`, `/quality-gate` — environment, types, lint, tests, review, security | When you invoke /verify or /quality-gate |
| `brainstorming` | Design exploration before implementation — asks questions, proposes approaches, presents design for approval | When creative/design work is detected |
| `update-docs` | Matches a code diff against in-repo doc files and applies targeted updates to whatever went stale | When a change renames, removes, or adds APIs, fields, config keys, or CLI flags |
| `ci-guard` | Detects repos with no CI workflow (GitHub Actions, GitLab CI, CircleCI) and prompts you to add one. Skips repos marked research-only. | When you start work in a repo under `repositories/` |
| `semantic-versioning` | Reads conventional commit prefixes to decide whether the next release is major, minor, or patch | When you commit or push and the repo needs a version bump, or you ask about releases |
| `cost-speed-meter` | Records explicit timing measurements and recommends faster alternatives, such as unit over integration tests. Opt-in, not on every command. | When you ask to time a command or speed up a feedback loop |

### On-demand docs (agent-docs/)

Expand All @@ -96,6 +100,7 @@ These are NOT loaded every session. Claude reads them only when the task require
| `codebase-onboarding` | Systematic onboarding to unfamiliar codebases |
| `writing-skills` | TDD methodology for creating new skills |
| `subagent-driven-development` | Dispatching subagents per task with two-stage review |
| `workspace-development` | Modifying and extending this workspace (config, skills, commands, hooks) |

---

Expand All @@ -120,6 +125,14 @@ Type the command name in the chat to run it.
| `/focus` | Switch repos mid-session | Re-presents the repo menu, replaces current focus |
| `/changelog` | Before a release | Generates a changelog grouped by intent from git history |
| `/dep-check` | Periodic audit | Checks for unused deps, outdated versions, vulnerabilities, license issues |
| `/check-code` | Quick pass while coding | Lightweight Python lint and format check. Use `/verify` for the full workflow. |
| `/update-docs` | After code changes | Scans docs in the focused repo, matches them against the diff, proposes targeted updates |
| `/repo-sync` | Start of session | Fetches and reports which focused repos are behind the remote or have uncommitted changes |
| `/harness-lint` | Agent setup in CI | 97 deterministic rules plus system-level analysis. No LLM, fast, reproducible. |
| `/harness-review` | Agent setup audit | Reads every file and gives KEEP/REVIEW/REMOVE verdicts per component |
| `/harness-security` | Agent setup audit | Deterministic scanning combined with semantic security review |
| `/skill-review` | Authoring a skill | Deep static and qualitative evaluation of one skill, alone and in context |
| `/skill-verify` | Before installing a skill | Lint plus security in one pass, returns SAFE / CAUTION / UNSAFE |
| `/toolkit` | First time / discovery | Shows everything available and recommends what to use |

---
Expand Down
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ Skills are knowledge that Claude carries in the background. You don't trigger th
| `refactoring-patterns` | Measurement-driven refactoring with before/after metrics |
| `verification-loop` | Powers `/verify`, `/quality-gate` (invoked on demand) |
| `brainstorming` | Design exploration before implementation |
| `update-docs` | Detects docs made stale by a code diff, applies targeted updates |
| `ci-guard` | Flags repos under `repositories/` that have no CI workflow |
| `semantic-versioning` | Reads conventional commits to pick the next major/minor/patch |
| `cost-speed-meter` | Opt-in timing of commands, suggests faster feedback loops |

### Commands (you trigger these)

Expand All @@ -69,6 +73,14 @@ Skills are knowledge that Claude carries in the background. You don't trigger th
| `/focus` | Switch repos | Pick repos from a list |
| `/changelog` | Before a release | Generate changelog grouped by intent |
| `/dep-check` | Periodic audit | Check unused deps, outdated versions, vulnerabilities |
| `/check-code` | Quick pass | Lightweight Python lint and format check |
| `/update-docs` | After code changes | Find stale docs, propose targeted updates |
| `/repo-sync` | Start of session | Fetch and report repos that are behind or dirty |
| `/harness-lint` | Agent setup CI | 97 deterministic rules, no LLM, reproducible |
| `/harness-review` | Agent setup audit | Per-component KEEP/REVIEW/REMOVE verdicts |
| `/harness-security` | Agent setup audit | Deterministic scan plus semantic security review |
| `/skill-review` | Authoring a skill | Deep static and qualitative evaluation of one skill |
| `/skill-verify` | Before installing | Lint plus security in one pass: SAFE / CAUTION / UNSAFE |
| `/toolkit` | Discovery | See everything available |

### Hooks (automatic safety nets)
Expand Down
4 changes: 3 additions & 1 deletion skills/python-patterns/references/api-clients.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@ LLM outputs often include markdown fences that break JSON parsing. Always clean
```python
import json


def clean_llm_response(text):
for prefix in ("```markdown", "```json", "```"):
if text.startswith(prefix):
text = text[len(prefix):].strip()
text = text[len(prefix) :].strip()
if text.endswith("```"):
text = text[:-3].strip()
return text


def parse_llm_json(text):
text = clean_llm_response(text)
try:
Expand Down
1 change: 1 addition & 0 deletions skills/python-patterns/references/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
# DataFrame testing
import pandas.testing as tm


def test_feature_engineering():
input_df = pd.DataFrame({"price": [100, 200], "quantity": [2, 3]})
result = add_total_column(input_df)
Expand Down
Loading