Commit Graph

57 Commits

Author SHA1 Message Date
Daniel Avila a56202407d feat(cli-rust): Rust port of the CLI core (install path) + npm distribution + CI (#640)
* feat(cli-rust): add Rust port of the CLI core with npm distribution + CI

Adds a new `cli-rust/` crate (binary `cct`) that ports the CORE of the
claude-code-templates CLI to Rust, alongside the existing Node `cli-tool/`.

Native (byte-parity with the Node CLI, verified via `diff -r`):
- Component installation: --agent/--command/--mcp/--setting/--hook/--skill
  and --workflow YAML, replicating the exact GitHub raw/API URLs, target
  paths (flat dir, category dropped), .mcp.json/settings/hooks merge
  semantics, .py/.sh sidecars, 2-space JSON + trailing newline.
- Fire-and-forget tracking (3 endpoints, detached threads, env opt-out).

Delegated to the Node CLI for now (commands/delegate.rs forwards argv via
CCT_NODE_BIN or `npx claude-code-templates@latest`): dashboards, sandbox,
global agents, stats, health-check, interactive setup.

Parity gotcha handled: serde_json Map::remove does swap-remove under
preserve_order; switched to shift_remove to match JS `delete` key order.

Distribution: npm shim (npm/cct/bin/cct.js) execs a prebuilt binary from
optionalDependencies (@davila7/cct-<os>-<arch>, esbuild pattern) so `npx`
keeps working; plus Homebrew, cargo-binstall, and install.sh from GitHub
Releases. build-rust-cli.yml builds all 5 targets on tag `cli-rust-v*`.

Tests: 23 offline unit/integration tests + 2 network integration tests
(#[ignore]). fmt + clippy clean.

CI: rust-ci.yml runs fmt + clippy + tests only when cli-rust/** changes and
posts a sticky PR comment with the results.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(cli-rust): address cubic review (config safety, opt-out, packaging, CI)

Fixes from the cubic automated review on PR #640:

- install.rs: fail safe on a corrupt/unreadable existing .mcp.json/settings
  file instead of silently overwriting it (MCP aborts; setting/hook skip the
  location), matching Node's throw-on-bad-config behavior.
- tracking.rs: honor both `=1` and `=true` as opt-out values (the README
  documents `=1`); Node only checks `=true`, so this is more privacy-safe.
- cli.rs/main.rs: implement --dry-run for the native install path (prints the
  plan, writes nothing) instead of parsing the flag and ignoring it.
- main.rs: run_prompt surfaces a non-zero `claude` exit code (a missing
  `claude` stays a soft warning since the install already succeeded).
- delegate.rs: propagate signal-based termination as 128+signal on Unix
  instead of collapsing to exit code 1.
- github.rs: warn when a skill file fails to download (mirrors Node's
  "Could not download" log) instead of skipping silently.
- npm/build-packages.mjs: accept the release `.tgz` artifacts (extract them)
  in addition to unpacked binaries, matching build-rust-cli.yml output.
- npm/cct/package.json: add top-level os/cpu so npm rejects unsupported
  platforms at install time instead of failing at runtime.
- build-rust-cli.yml: add `permissions: contents: write` (gh-release) and
  Swatinem/rust-cache for the 5-target matrix.
- tests/integration.rs: tighten the 2-space-indent assertion.

Not changed (intentional parity with the Node CLI):
- merge.rs new-hook-type copy: Node copies the incoming value as-is for a
  previously-absent hook type (no old-format normalization); kept identical.

fmt + clippy clean; 23 offline + 2 network tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(cli-rust): abort install on corrupt existing settings/hook config

Follow-up to the cubic review: a corrupt/unreadable existing settings or
hook file now fails the whole component install (returns 0) instead of
skipping just that location, matching Node — where readJson throws out of
the per-location loop and fails the component. Prevents a multi-location
run from reporting success despite a bad target location.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* chore(cli-rust): prep v0.1.0 release via GitHub Releases + cargo-binstall

Wire up the two opt-in distribution channels that don't touch the existing
`claude-code-templates` npm package:

- Cargo.toml: fix cargo-binstall pkg-url to the `cli-rust-v<version>` tag
  (was `v<version>`), so `cargo binstall --git ...` resolves the release asset.
- install.sh: resolve the latest `cli-rust-v*` release instead of the generic
  /releases/latest, which could otherwise pick a Node-CLI `vX.Y.Z` release.
- README: install table now lists the available preview channels (curl|sh,
  cargo-binstall via --git, from source) and marks Homebrew/npm as planned;
  Release section documents the merge -> tag cli-rust-v0.1.0 -> verify flow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 22:20:46 -04:00
Daniel Avila 6c5b5ff1f1 feat: Add SkillSpector security scanning for skill components (#623)
Integrate NVIDIA's SkillSpector static analyzer (Apache-2.0) to scan
AI agent skills under cli-tool/components/skills/ for security issues
(prompt injection, data exfiltration, supply chain, dangerous code, etc.).

- scripts/skillspector_scan.py: batch orchestrator that discovers skill
  dirs (by SKILL.md), runs `skillspector scan --no-llm --format json` on
  each, and aggregates results into a Markdown PR report + SARIF log.
  Tolerates per-skill scan failures and the CLI's non-zero exit on high
  scores without aborting the batch.
- skill-security-scan.yml (PR): scans only changed skills, posts an
  idempotent report comment, and blocks on HIGH/CRITICAL (score > 50).
- skill-security-scan-all.yml (weekly + manual): scans all skills,
  reports to run summary and SARIF, never blocks.
- CLAUDE.md: document the scanning workflow.

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-05 23:12:26 -04:00
dependabot[bot] c604eb5328 chore(deps): bump actions/setup-node from 4 to 6 (#586)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-15 20:41:33 -04:00
Dani 64c8587c2b fix: pass PUBLIC_* env vars to build step in CI 2026-05-12 15:33:07 -04:00
Daniel Avila dae5faa009 migrate: Vercel → Cloudflare Pages + Workers (/mes → ~/bin/zsh-5/mes) (#571)
* migrate: Vercel → Cloudflare Pages + Workers para reducir costos ($110 → ~$0-5/mes)

- Cambia adaptador Astro de @astrojs/vercel a @astrojs/cloudflare (mode: 'directory')
- Agrega dashboard/wrangler.toml con nodejs_compat para compatibilidad total
- Crea cloudflare-workers/crons/ Worker que reemplaza los cron jobs de Vercel
  (claude-code-check cada 30min, health-check cada 1h en vez de cada 15min)
- Actualiza CI/CD: Vercel CLI → wrangler pages deploy (requiere CLOUDFLARE_API_TOKEN y CLOUDFLARE_ACCOUNT_ID en GitHub Secrets)
- Elimina crons duplicados del proyecto legacy aitmpl (root vercel.json)
- Quick win: agrega Cache-Control headers a components.json (86400s), plugins.json,
  trending-data.json y claude-jobs.json para cortar el costo de bandwidth de $53

Próximos pasos manuales (ver PR description):
1. Crear proyecto en Cloudflare Pages
2. Agregar secrets de Cloudflare en GitHub
3. Migrar env vars de Vercel a Cloudflare Dashboard
4. Deployar cloudflare-workers/crons con wrangler
5. Apuntar dominios a Cloudflare Pages

* fix: nodejs_compat_v2 + react-dom/server.node alias para Cloudflare Workers

- Cambia compatibility_flags de nodejs_compat a nodejs_compat_v2
- Agrega alias vite react-dom/server → react-dom/server.node para evitar
  MessageChannel error en module init time en Cloudflare Workers runtime
- Agrega ssr.noExternal para bundlear react-dom y aplicar el alias

* fix: revert compatibility_flags a nodejs_compat (estándar)

nodejs_compat_v2 no es el flag primario. El fix real del MessageChannel
error fue el alias vite react-dom/server → react-dom/server.node,
no el cambio de flag.

* fix: inject Cloudflare Pages runtime env into process.env via middleware

Add Astro middleware that copies context.locals.runtime.env (Cloudflare
Pages secrets) into process.env before each request, so API routes can
use process.env.X as a unified pattern without changing the call sites.

Also add || process.env.X fallbacks to all API routes/libs that were
using import.meta.env exclusively (build-time only in Vite).

Verified on staging: track-download-supabase, health-check,
claude-code-check, collections, github/token all return correct responses.
2026-05-08 20:24:28 -04:00
Daniel Avila 4057ef73e3 Merge pull request #525 from davila7/dependabot/github_actions/actions/github-script-9
chore(deps): bump actions/github-script from 8 to 9
2026-04-18 18:34:11 -04:00
Claude d95ea2a11c Separate label and comment idempotency
The label should always be re-applied on synchronize events (new commits
after review mean re-review is needed), but the welcome comment should
stay idempotent. Move the label/createLabel logic before the marker
check so `review-pending` is ensured on every run.

https://claude.ai/code/session_016JRD3XpvZag4BGgQsw84uk
2026-04-18 22:26:04 +00:00
Claude ca95145e91 Add synchronize trigger with idempotency guard
Covers the case where a PR is opened without component changes and adds
them in a later commit. Uses a hidden HTML marker in the welcome comment
to detect prior runs and skip re-posting on subsequent synchronize events.

https://claude.ai/code/session_016JRD3XpvZag4BGgQsw84uk
2026-04-18 22:22:18 +00:00
Claude 59fb1a0285 Add component PR welcome workflow
Posts a welcome comment and applies a `review-pending` label when a PR
touches `cli-tool/components/**`. The comment explains the review flow
(audit → maintainer review → merge → catalog regen → live on aitmpl.com)
so contributors know what to expect after submitting.

https://claude.ai/code/session_016JRD3XpvZag4BGgQsw84uk
2026-04-18 01:26:27 +00:00
dependabot[bot] 22bf2614aa chore(deps): bump actions/github-script from 8 to 9
Bumps [actions/github-script](https://github.com/actions/github-script) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v8...v9)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-16 06:46:12 +00:00
Daniel Avila ea2c8e034c Merge pull request #462 from davila7/dependabot/github_actions/actions/checkout-6
chore(deps): bump actions/checkout from 4 to 6
2026-03-27 09:04:41 -04:00
Daniel Avila 9fa64e3a76 Merge pull request #460 from davila7/dependabot/github_actions/actions/upload-artifact-7
chore(deps): bump actions/upload-artifact from 6 to 7
2026-03-27 09:04:21 -04:00
dependabot[bot] a5e995a315 chore(deps): bump actions/checkout from 4 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 01:14:55 +00:00
dependabot[bot] bfa31c68da chore(deps): bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 23:20:26 +00:00
dependabot[bot] 4d175c3cf8 chore(deps): bump actions/setup-node from 4 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 23:20:23 +00:00
Daniel Avila 0e06493dbe security: Harden CI/CD and repo for open-source safety (#458)
* enhance: Improve prompt-engineer agent (automated review)

- Fix broken reasoning framework: complete Ordering field and Necessity scale
- Remove OpenAI attribution from description; add invocation example block
- Restrict tools to Read only (text-transformation agent needs no writes)
- Add XML Structure and CoT Opportunity dimensions to reasoning template
- Move meta-instruction NOTE out of output template, place as agent directive
- Fix stray markdown bold markers on Reasoning Before Conclusions guideline
- Integrate orphaned examples bullet into the Examples guideline line
- Add concrete worked example section (classify customer feedback)

Automated review cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>

* security: Harden CI/CD and repo for open-source safety

- Add --ignore-scripts to all npm ci/install in CI workflows and predeploy script
- Fix shell injection in discord-release-notification (use env vars + jq for payload)
- Add explicit permissions to all workflows (least privilege principle)
- Add root .npmrc with ignore-scripts=true
- Add .github/dependabot.yml for automated dependency security updates
- Add .github/CODEOWNERS to protect workflows, scripts, and API paths
- Expand .gitignore with *.pem, *.key, credentials.json patterns

* fix: Grant contents:read to deploy workflow so checkout works

Cubic correctly flagged that permissions: {} blocks actions/checkout.
2026-03-26 19:19:39 -04:00
Daniel Avila 39c10aab48 feat(jobs): add Claude Code jobs section with free scraping pipeline (#435)
* feat(jobs): add Claude Code jobs section with free scraping pipeline

Add a new Jobs page (/jobs) and homepage preview showing positions that
require Claude Code. The scraper uses only free sources (HN Firebase API,
HN Algolia, RemoteOK, WeWorkRemotely RSS) with no API keys needed.
Runs daily via GitHub Actions alongside existing data updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(jobs): address all Cubic review feedback (P1+P2)

P1 fixes:
- Location parser now skips role titles (e.g. "AI-Native Technical Operations Lead")
- Salary extraction filters out funding/revenue amounts ($37M raised)
- applyUrl validated with safeUrl() to prevent javascript: injection

P2 fixes:
- timeAgo() handles NaN/invalid dates gracefully
- WeWorkRemotely IDs use URL slug instead of non-deterministic hash()
- GitHub Action diff check includes dashboard/public/claude-jobs.json
- Remote flag also checks description body for remote indicators

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(jobs): fix mojibake encoding and false salary extraction

- strip_html() now fixes common UTF-8 mojibake patterns (’ → ', â€" → —)
- Salary validation requires k/K suffix or >= $1000 for raw amounts
- Removes false positives: $100-140, $150-300 (ambiguous), $20K (bounty)
- Adds $X/yr pattern for single-value annual salaries

Addresses Cubic review comments #8, #9, #10.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(jobs): add Anthropic Careers source, auth gate, and UI improvements

- Add Greenhouse API collector for Anthropic career listings mentioning Claude Code
- Add Clerk auth gate requiring sign-in to view job links
- Add auth banner with sign-in CTA for unauthenticated users
- Improve description/tag color contrast (#999/#aaa) for dark theme
- Add Anthropic source badge (purple)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(jobs): address Cubic review — avoid unnecessary rerenders and remove candidate cap

- useGlobalAuth: only call setState when values actually change (prevents 500ms rerender loop)
- Remove hard cap of 80 Anthropic candidates to avoid dropping valid Claude Code roles

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 15:32:44 -04:00
Dani d1f561f914 feat: Migrate API endpoints to Astro dashboard, unify under single Vercel project
- Migrate all API endpoints from api/ (Vercel serverless) to dashboard/src/pages/api/ (Astro routes)
  - track-download-supabase, track-command-usage, track-installation-outcome, track-website-events
  - collections (index, [id], items)
  - health-check, claude-code-check, discord/interactions
- Add shared API libs: cors.ts, neon.ts, auth.ts, changelog-parser.ts
- Add @supabase/supabase-js, @neondatabase/serverless, discord-interactions, @clerk/backend deps
- Remove catch-all API proxy ([...path].ts) - APIs are now native Astro routes
- Serve components.json and trending-data.json from dashboard/public/
- Switch to same-origin fetching (relative URLs) for data files
- Add dashboard/vercel.json with crons and CORS headers
- Simplify CI/CD to single deploy target (dashboard project)
- Update deploy script and package.json scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:59:52 -05:00
daniel 40f631f000 feat: Add deploy scripts and CI/CD for dual Vercel projects
- Add scripts/deploy.sh with site/dashboard/all targets
- Add npm scripts: deploy:site, deploy:dashboard, deploy:all
- Add GitHub Actions workflow with path-based triggers:
  docs/api/vercel.json changes → deploy www.aitmpl.com
  dashboard/ changes → deploy app.aitmpl.com
- Update CLAUDE.md deployment docs, remove obsolete prebuild notes

Resolves CLA-22

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 23:13:17 -05:00
Salman Chishti 965c14699c Upgrade GitHub Actions for Node 24 compatibility (#368)
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
2026-02-19 19:18:56 -05:00
Daniel Avila 0ce2a0c71d fix: Add thread_name for forum channel in community help bot (#363)
Discord forum channels require thread_name in webhook payloads.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-15 23:00:20 -05:00
Daniel Avila 61f5a41330 feat: Add 3 daily Discord bots (blog, general, community help) (#361)
- Blog bot: shares random blog article daily at 15:00 UTC
- General bot: posts engagement questions (50 questions pool) at 16:00 UTC
- Community Help bot: posts Claude Code tips/tutorials (42 questions pool) at 17:00 UTC

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-15 22:42:13 -05:00
daniel b525ec0c34 fix: Rewrite daily component workflow using jq for JSON payload
Removes broken initial jq block and builds Discord payload entirely
with jq to avoid heredoc variable expansion issues.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:38:22 -05:00
daniel f1ed8ddca0 feat: Add daily component pick Discord notification workflow
Shares a random component from the catalog to Discord daily at 14:00 UTC.
Includes rich embed with type, category, install command, and website link.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 23:35:27 -05:00
daniel a7b8e33f1c fix: Make security audit non-blocking for deploys
Set continue-on-error: true so the security validation workflow
reports issues without failing the overall deployment pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 21:13:05 -05:00
Salman Chishti bc78aadb80 Upgrade GitHub Actions for Node 24 compatibility (#305) 2026-01-29 00:43:13 -05:00
Daniel Avila c1045e5c9c feat: Improve security audit GitHub Action with compact summary tables (#296)
- Replace verbose component listings with concise markdown tables
- Show only top 5 failed components in PR comments
- Add summary table for overall statistics
- Reduce comment size significantly while maintaining key information
- Encourage users to view full report in workflow artifacts for details

https://claude.ai/code/session_01JkCjk0Y2XZxR2DWG8D3hBN

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-21 21:23:31 -05:00
Dani 1a92c41eaa fix: Update script references after reorganization
Updated all references to point to new script locations:
- generate_components_json.py → scripts/generate_components_json.py
- generate_trending_data.py → scripts/generate_trending_data.py

Files updated:
- .github/workflows/update-json-data.yml
- CLAUDE.md
- docs/CLAUDE.md
- docs/api/README.md
- docs/guides/growth-kit-pr.md
- cli-tool/src/validation/README.md

This ensures CI/CD workflows and documentation are in sync with the new project structure.

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 16:25:37 -05:00
Dani 9099288441 feat: Add GitHub Actions workflow for daily JSON data updates
- Runs daily at 3:00 AM UTC
- Generates components.json and trending-data.json
- Auto-commits changes if data is updated
- Can be triggered manually via workflow_dispatch

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 16:53:49 -05:00
Dani 4087d5505c fix: use env variable for release body to prevent execution
- Move RELEASE_BODY to environment variable
- Prevents GitHub Actions from interpreting release body content as bash commands
- Safer handling of user-provided content
2025-10-27 16:45:10 -04:00
Dani b9c515105e fix: prevent command execution in Discord webhook release body
- Replace echo with printf to safely handle release body content
- Prevents bash command interpretation in release notes
- Fixes TRUNCATED_BODY escaping to avoid command injection
2025-10-27 16:42:43 -04:00
Dani ee32f94540 refactor: optimize GitHub Actions workflows
- Remove Docusaurus deployment workflow (unused)
- Remove Vercel deployment workflow (handled separately)
- Update publish-package workflow to avoid conflicts with manual releases
  - No longer bumps version (uses existing version)
  - No longer creates commits, tags, or releases
  - Only publishes to GitHub Packages registry
  - Prevents duplicate releases when publishing manually to npm
2025-10-27 16:36:42 -04:00
Dani 072197cbde discord release notification 2025-10-27 09:19:58 -04:00
Daniel Avila 5cba740dde Improve validation modal text display and UX enhancements (#112)
## Changes Made:

### 1. Modal Text Display Improvements
- Increased error/warning message font size from 14px to 16px for better readability
- Improved line height from 1.5 to 1.6 for better spacing
- Increased margin-bottom from 4px to 8px for better visual separation

### 2. Code Preview Text Wrapping
- Removed horizontal scroll (`overflow-x: auto`) from code previews
- Added `white-space: normal` to prevent excessive whitespace at line start
- Added `word-wrap: break-word` and `overflow-wrap: break-word` for proper text wrapping
- Applied to all code preview sections:
  - Error line text previews
  - Warning line text previews
  - Example line text in errors
  - Example line text in warnings

### 3. Line Number Scroll Synchronization
- Added `position: relative` to `.code-body` for better layout control
- Added `overflow: hidden` and `max-height: 600px` to `.code-line-numbers`
- Added `max-height: 600px` to `.code-content`
- Implemented JavaScript scroll sync between line numbers and code content
- Line numbers now scroll perfectly in sync with code content

### 4. Clickable Error Line Numbers
- Added `cursor: pointer` to error/warning line numbers
- Added "Click to see details" tooltip on error/warning lines
- Implemented click event listeners on all error/warning lines
- Click handler searches through validators to find matching error
- Opens validation modal with correct validator details when clicked
- Added hover effects with `transform: translateX(-2px)` and `cursor: help`

## User Experience Improvements:
- ✅ Error messages are now larger and easier to read (16px)
- ✅ Code snippets wrap naturally without horizontal scroll
- ✅ No excessive whitespace at the beginning of code lines
- ✅ Line numbers stay synchronized during scroll
- ✅ Error line numbers are interactive and open detailed validation modals
- ✅ Better visual hierarchy with improved spacing and sizing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-16 15:34:11 -04:00
Dani 786982f982 cleanup: remove all GitHub workflow-based tracking systems
- Remove 4 obsolete tracking workflows:
  - analytics-processor.yml (GitHub Issues-based tracking)
  - tracking-dispatch.yml (repository dispatch events)
  - process-tracking-logs.yml (GitHub Pages log processing)
  - simple-tracking.yml (manual workflow dispatch)

- Remove obsolete JSON data file:
  - docs/analytics/download-stats.json (workflow-generated data)

- Update WORKFLOWS_REFERENCE.md to reflect current architecture:
  - Document only active workflows (deploy, publish-package)
  - Replace workflow tracking docs with Supabase integration info
  - Add migration history and troubleshooting for new system

The tracking system now uses direct Supabase database integration
from the CLI, eliminating all GitHub Actions dependencies for
analytics. This provides better performance, reliability, and
real-time tracking capabilities.

Remaining workflows handle only deployment and package publishing.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-19 18:15:53 -04:00
Dani 8788f4ea7a 🚀 Setup Automated Deployment - Main Branch to aitmpl.com
## GitHub Actions Workflow:
✅ Automatic deployment on push to main branch only
✅ Uses Vercel CLI for production builds
✅ Deploys to aitmpl.com custom domain
✅ Other branches require manual deployment

## Configuration Files:
-  - GitHub Actions workflow
-  - Setup instructions for secrets
-  - Vercel configuration with caching and security headers

## Required GitHub Secrets:
- VERCEL_TOKEN
- VERCEL_ORG_ID
- VERCEL_PROJECT_ID

## Deployment Flow:
🎯 Push to main → Auto-deploy to https://aitmpl.com
🔧 Other branches → Manual deployment only

Professional CI/CD pipeline for seamless production deployments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 12:49:50 -04:00
Dani 9e665f343c feat: add GitHub Packages publishing workflow
- Add automated workflow to publish CLI package to GitHub Packages
- Configure package scoping with @davila7/claude-code-templates
- Include version bumping and automatic GitHub releases
- Add .npmrc for proper registry configuration
- Support both manual triggers and release-based publishing

Package will be available as:
npm install -g @davila7/claude-code-templates --registry=https://npm.pkg.github.com

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 11:13:17 -04:00
Dani 880066726d docs: add workflows reference guide
- Document active vs deprecated workflows
- Provide clear usage instructions for download tracking
- Include troubleshooting guide for workflow conflicts
- Prevent confusion about which workflow to use

Active: simple-tracking.yml (download tracking)
Deprecated: 3 previous tracking attempts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 09:07:25 -04:00
Dani 5386eb009f feat: deprecate old tracking workflows and clarify active system
- Mark analytics-processor.yml as DEPRECATED (issues-based approach)
- Mark process-tracking-logs.yml as DEPRECATED (scheduled cron approach)
- Mark tracking-dispatch.yml as DEPRECATED (repository dispatch approach)
- Disable all triggers on deprecated workflows to prevent conflicts
- Add clear documentation that simple-tracking.yml is the ACTIVE workflow
- Keep deprecated files for reference and historical context

Active workflow: simple-tracking.yml (manual triggers + PR creation)
Deprecated workflows: 3 previous attempts with different approaches

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 09:04:35 -04:00
Dani c352782102 fix: add pull request permissions to tracking workflow
- Add pull-requests: write permission for GitHub CLI
- Enable automated PR creation for tracking updates

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 08:57:21 -04:00
Dani d9aac6b0df fix: update tracking workflow to create PRs instead of direct push
- Change workflow to create pull requests for tracking updates
- Maintain repository security by requiring PR review
- Add detailed PR descriptions with component information
- Use GitHub CLI for automated PR creation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 08:56:03 -04:00
Dani 1e8b0be89d feat: implement elegant download tracking system with analytics dashboard
- ✨ Add comprehensive download tracking infrastructure
- 📊 Create detailed analytics dashboard at /download-stats.html
- 🔧 Implement GitHub Actions workflow for stats processing
- 🎨 Add elegant footer link instead of main page widget
- 📈 Support interactive charts with Chart.js integration
- 🔒 Maintain privacy-first approach with anonymous tracking
- 📱 Responsive design for mobile and desktop
- 🚀 Ready for production deployment

Components added:
- GitHub Actions workflow for manual tracking triggers
- Analytics JSON data structure and processing
- Interactive dashboard with doughnut and line charts
- Progress bars and detailed component metrics
- Terminal-style design consistent with site theme

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 08:49:40 -04:00
Dani 537c07a0ea feat(docs): Migrate Docusaurus deployment to Vercel
- Remove Docusaurus deployment from GitHub Actions workflow.
- Configure Vercel for Docusaurus deployment.
- Update Docusaurus baseUrl for Vercel.
2025-07-31 20:06:28 -04:00
Dani 947b68fcfc fix(deploy): Ensure .nojekyll is copied to root 2025-07-31 19:50:10 -04:00
Dani 40630e439b fix(deploy): Add .nojekyll file to disable Jekyll 2025-07-31 19:46:01 -04:00
Dani 792515b211 fix(deploy): Implement single-job deployment workflow 2025-07-31 19:40:56 -04:00
Dani 3159f525fc chore(deploy): Refactor deployment workflow for robustness 2025-07-31 19:31:49 -04:00
Dani 4e86085725 fix(deploy): Use standard GitHub Pages action for deployment 2025-07-31 19:24:14 -04:00
Dani 56646d0497 fix: Adjust Docusaurus deployment path to simplify site structure 2025-07-31 18:37:44 -04:00
Dani fa873d9075 fix: correct timestamp generation in tracking workflow
- Fix last_updated field to use actual timestamp instead of literal string
- Use CURRENT_TIMESTAMP variable with proper command substitution
- Update sample data to reflect recent testing (2 agent downloads)
- Remove single quotes around EOF to allow variable expansion
2025-07-31 17:29:34 -04:00