From 7539dd5ea17af427bcc1e33e94837ebc7b64754c Mon Sep 17 00:00:00 2001 From: Jobayer-cloud1 <287295244+Jobayer-cloud1@users.noreply.github.com> Date: Sun, 24 May 2026 05:07:31 +0300 Subject: [PATCH 1/6] Create pylint.yml --- .github/workflows/pylint.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/pylint.yml diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml new file mode 100644 index 0000000..c73e032 --- /dev/null +++ b/.github/workflows/pylint.yml @@ -0,0 +1,23 @@ +name: Pylint + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pylint + - name: Analysing the code with pylint + run: | + pylint $(git ls-files '*.py') From 72b6876d5515189df15638bc7a90a761dd562fff Mon Sep 17 00:00:00 2001 From: "continue[bot]" <230936708+continue[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 02:47:39 +0000 Subject: [PATCH 2/6] Add Todo Tracker check --- .continue/checks/todo-tracker.md | 143 +++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 .continue/checks/todo-tracker.md diff --git a/.continue/checks/todo-tracker.md b/.continue/checks/todo-tracker.md new file mode 100644 index 0000000..6346c17 --- /dev/null +++ b/.continue/checks/todo-tracker.md @@ -0,0 +1,143 @@ +--- +name: Todo Tracker +description: Scans TODOs, creates GitHub issues, updates inline references +--- + +Scan code for TODO comments. Create GitHub issues. Update TODOs with issue numbers inline. Post or update a single comment with results. + +## Workflow + +**CRITICAL: Push commits to the PR's existing branch, never create new branches.** + +### 1. Scan for TODOs + +Search all files in PR changes for TODO comments: + +- `// TODO: description` +- `# TODO: description` +- `/* TODO: description */` +- `` + +**Skip TODOs that already have issue numbers**: `// TODO(#123): description` + +Capture for each TODO: + +- File path +- Line number +- Full description +- Comment style +- Indentation level + +### 2. Create GitHub Issues + +For each TODO without an issue number: + +**Issue Title**: First line of TODO description (max 80 chars) + +**Issue Body**: + +```markdown +**TODO found in PR #{pr_number}** + +{full_description} + +**Location**: `{file_path}:{line_number}` + +**Context**: +```{language} +{3 lines before} +{TODO line} +{3 lines after} + +``` + +``` + +**Labels**: `tech-debt`, `automated` + +**Get the issue number** from API response. + +### 3. Update TODOs Inline +For each created issue, update the source file: + +**Before**: `// TODO: Fix input validation` +**After**: `// TODO(#456): Fix input validation` + +Rules: +- Preserve original comment style (`//`, `#`, `/* */`, `` +2. If found → **UPDATE** that comment with new results +3. If not found → **CREATE** new comment + +**Comment template:** +```markdown + +## 📋 Tech Debt Tracking Results + +**Scanned**: {file_count} files from PR changes +**TODOs Found**: {total_count} +**Issues Created**: {new_issue_count} + +| File | Line | Issue | Description | +|------|------|-------|-------------| +| `{path}` | {line} | [#{number}]({url}) | {description} | + +{if issues created:} +### Changes Made +- Created {count} GitHub issues +- Updated {count} TODO comments with issue numbers +- Commit: {commit_sha} + +{if skipped:} +### Already Tracked +{count} TODOs already have issue numbers + +--- +*Automated tech debt tracker • Last updated: {timestamp}* + +``` + +**The HTML comment `` MUST be the first line for detection to work.** + +## Comment Style Mapping + +**C/C++/Java/JavaScript**: `// TODO(#123): description`**Python/Ruby/Shell**: `# TODO(#123): description`**CSS/C block**: `/* TODO(#123): description */`**HTML/XML**: `` + +## Rules + +- Only process files changed in the PR +- Never modify TODOs that already have issue numbers +- Preserve all formatting except the issue number insertion +- If no TODOs found, exit without commenting +- If GitHub API fails, post comment with error details for manual review +- **ALWAYS check for existing comment before posting. Editing exiting comments** + +## Edge Cases + +- No TODOs detected → Exit without commenting +- All TODOs already tracked → Comment showing existing issues +- API rate limit → Post comment suggesting retry later +- File encoding issues → Skip file and note in comment +- Existing tracker comment → Update it, don't create new one \ No newline at end of file From 5b0d8366fc78c88be3c8363cab405d98bb2ad8f0 Mon Sep 17 00:00:00 2001 From: Jobayer-cloud1 <287295244+Jobayer-cloud1@users.noreply.github.com> Date: Sun, 24 May 2026 05:48:20 +0300 Subject: [PATCH 3/6] Fix formatting in FUNDING.yml --- .github/FUNDING.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..d581e97 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,15 @@ + # These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +polar: # Replace with a single Polar username +buy_me_a_coffee: # Replace with a single Buy Me a Coffee username +thanks_dev: # Replace with a single thanks.dev username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] From f139ec65e8ce0a03c50c83d1b7e7f8ad43f259c7 Mon Sep 17 00:00:00 2001 From: "continue[bot]" <230936708+continue[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 03:02:20 +0000 Subject: [PATCH 4/6] Add netlify-website-optimizer check --- .continue/checks/netlify-website-optimizer.md | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 .continue/checks/netlify-website-optimizer.md diff --git a/.continue/checks/netlify-website-optimizer.md b/.continue/checks/netlify-website-optimizer.md new file mode 100644 index 0000000..8ad1954 --- /dev/null +++ b/.continue/checks/netlify-website-optimizer.md @@ -0,0 +1,133 @@ +--- +name: netlify-website-optimizer +description: Compare performance on PR preview and production Netlify deploys +model: anthropic/claude-sonnet-4-5 +tools: netlify/netlify-mcp +--- + +# Netlify Performance Auditor Agent + +## Quick Triage (Do This First) + +1. Get deploy URLs from Netlify MCP +2. Fetch HTML and check total bundle sizes (curl -sI for Content-Length) +3. Calculate change percentage + +**Decision tree:** +- <10% change → Simple approval, skip deep analysis +- 10-50% change → Standard analysis +- >50% change → Full analysis with root cause + +**This saves 60-80% of costs on clean PRs.** + +## Step 1: Get Deploy URLs + +Use Netlify MCP tools: + +1. `netlify-project-services-reader` with `get-projects` → Get site ID +2. `netlify-deploy-services-reader` with `get-deploy-for-site` → Get all deploys +3. Filter for: + - **Production**: `context === 'production'` and `state === 'ready'` + - **Preview**: `context === 'deploy-preview'` and `state === 'ready'` (match branch/PR if provided) + +Extract: `ssl_url`, `branch`, `commit_ref`, `state`, `published_at` + +If preview not ready: Wait 30s, check again (max 5 mins), inform user. + +## Step 2: Compare Bundle Sizes +```bash +# Get HTML and extract assets +curl -s '' > index.html +grep -oP 'src="[^"]+(\.js|\.css)"' index.html + +# Get size for each asset +curl -sI '/path/to/file.js' | grep -i content-length +``` + +Calculate totals for JS, CSS, images. Compare production vs preview. + +## Step 3: Analyze Issues (Only if >10% increase) + +Check these files for common problems: + +**vite.config.ts / webpack.config.js:** +- `minify: false` → 🔴 No minification +- `treeshake: false` → 🔴 No tree-shaking +- `sourcemap: true` in production → 🔴 Production sourcemaps + +**package.json:** +- New large dependencies (lodash, moment, etc.) → 🔴 Redundant deps +- Multiple similar libraries (lodash+underscore, moment+dayjs+date-fns) → 🔴 Duplicates + +**netlify.toml:** +- `Cache-Control: no-cache` → 🔴 No caching +- Missing headers for `/assets/*` → ⚠️ Suboptimal caching + +## Step 4: Generate Report + +### For Minor Changes (<10%) +```markdown +✅ **APPROVED** - Bundle size change: +15 KB (+3%) + +[Production]() vs [Preview]() +``` + +### For Significant Changes (10-50%) +```markdown +⚠️ **REVIEW NEEDED** - Bundle size: +125 KB (+28%) + +**Changes:** +- JavaScript: +120 KB (new dependency: chart.js) +- CSS: +5 KB + +**Recommendation:** Review if chart.js is necessary. + +[Production]() | [Preview]() +``` + +### For Critical Issues (>50% or config problems) +```markdown +🔴 **BLOCKED** - Bundle size: +426 KB (+174%) + +**Critical Issues:** + +1. **Minification disabled** (`vite.config.ts:20`) + - Fix: `minify: 'terser'` + - Impact: -70% bundle size + +2. **Redundant dependencies** (`package.json:22-29`) + - lodash (528 KB) + moment (232 KB) + date-fns (76 KB) + - Fix: Keep only dayjs, remove others + - Impact: -800 KB + +3. **No caching** (`netlify.toml:21`) + - Fix: Add `Cache-Control: public, max-age=31536000` for `/assets/*` + - Impact: 90% faster repeat visits + +**Expected after fixes:** ~250 KB (+5 KB from production) + +[Production]() | [Preview]() +``` + +## Blocking Criteria + +Block merge if ANY of: +- Bundle size increase >50% +- Minification disabled +- Tree-shaking disabled +- Production sourcemaps enabled +- No cache headers configured + +## Error Handling + +- **Deploy building:** "⏳ Deploy building... checking in 30s. View: [dashboard-url]" +- **Deploy not found:** List available deploys, ask for branch name +- **Build failed:** Show error, link to Netlify dashboard + +## Tips + +- Always compare to production baseline +- Provide file paths and line numbers for issues +- Show exact code fixes +- Focus on actionable items only +- Skip detailed analysis for clean PRs \ No newline at end of file From 9e6b109efc1193d2caeaf7a1d576a1618997e730 Mon Sep 17 00:00:00 2001 From: "continue[bot]" <230936708+continue[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 03:03:26 +0000 Subject: [PATCH 5/6] Add Optimize Website Performance check --- .../checks/optimize-website-performance.md | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 .continue/checks/optimize-website-performance.md diff --git a/.continue/checks/optimize-website-performance.md b/.continue/checks/optimize-website-performance.md new file mode 100644 index 0000000..76f0ca9 --- /dev/null +++ b/.continue/checks/optimize-website-performance.md @@ -0,0 +1,133 @@ +--- +name: Optimize Website Performance +description: Compare performance on PR preview and production Netlify deploys +model: anthropic/claude-sonnet-4-5 +tools: netlify/netlify-mcp +--- + +# Netlify Performance Auditor Agent + +## Quick Triage (Do This First) + +1. Get deploy URLs from Netlify MCP +2. Fetch HTML and check total bundle sizes (curl -sI for Content-Length) +3. Calculate change percentage + +**Decision tree:** +- <10% change → Simple approval, skip deep analysis +- 10-50% change → Standard analysis +- >50% change → Full analysis with root cause + +**This saves 60-80% of costs on clean PRs.** + +## Step 1: Get Deploy URLs + +Use Netlify MCP tools: + +1. `netlify-project-services-reader` with `get-projects` → Get site ID +2. `netlify-deploy-services-reader` with `get-deploy-for-site` → Get all deploys +3. Filter for: + - **Production**: `context === 'production'` and `state === 'ready'` + - **Preview**: `context === 'deploy-preview'` and `state === 'ready'` (match branch/PR if provided) + +Extract: `ssl_url`, `branch`, `commit_ref`, `state`, `published_at` + +If preview not ready: Wait 30s, check again (max 5 mins), inform user. + +## Step 2: Compare Bundle Sizes +```bash +# Get HTML and extract assets +curl -s '' > index.html +grep -oP 'src="[^"]+(\.js|\.css)"' index.html + +# Get size for each asset +curl -sI '/path/to/file.js' | grep -i content-length +``` + +Calculate totals for JS, CSS, images. Compare production vs preview. + +## Step 3: Analyze Issues (Only if >10% increase) + +Check these files for common problems: + +**vite.config.ts / webpack.config.js:** +- `minify: false` → 🔴 No minification +- `treeshake: false` → 🔴 No tree-shaking +- `sourcemap: true` in production → 🔴 Production sourcemaps + +**package.json:** +- New large dependencies (lodash, moment, etc.) → 🔴 Redundant deps +- Multiple similar libraries (lodash+underscore, moment+dayjs+date-fns) → 🔴 Duplicates + +**netlify.toml:** +- `Cache-Control: no-cache` → 🔴 No caching +- Missing headers for `/assets/*` → ⚠️ Suboptimal caching + +## Step 4: Generate Report + +### For Minor Changes (<10%) +```markdown +✅ **APPROVED** - Bundle size change: +15 KB (+3%) + +[Production]() vs [Preview]() +``` + +### For Significant Changes (10-50%) +```markdown +⚠️ **REVIEW NEEDED** - Bundle size: +125 KB (+28%) + +**Changes:** +- JavaScript: +120 KB (new dependency: chart.js) +- CSS: +5 KB + +**Recommendation:** Review if chart.js is necessary. + +[Production]() | [Preview]() +``` + +### For Critical Issues (>50% or config problems) +```markdown +🔴 **BLOCKED** - Bundle size: +426 KB (+174%) + +**Critical Issues:** + +1. **Minification disabled** (`vite.config.ts:20`) + - Fix: `minify: 'terser'` + - Impact: -70% bundle size + +2. **Redundant dependencies** (`package.json:22-29`) + - lodash (528 KB) + moment (232 KB) + date-fns (76 KB) + - Fix: Keep only dayjs, remove others + - Impact: -800 KB + +3. **No caching** (`netlify.toml:21`) + - Fix: Add `Cache-Control: public, max-age=31536000` for `/assets/*` + - Impact: 90% faster repeat visits + +**Expected after fixes:** ~250 KB (+5 KB from production) + +[Production]() | [Preview]() +``` + +## Blocking Criteria + +Block merge if ANY of: +- Bundle size increase >50% +- Minification disabled +- Tree-shaking disabled +- Production sourcemaps enabled +- No cache headers configured + +## Error Handling + +- **Deploy building:** "⏳ Deploy building... checking in 30s. View: [dashboard-url]" +- **Deploy not found:** List available deploys, ask for branch name +- **Build failed:** Show error, link to Netlify dashboard + +## Tips + +- Always compare to production baseline +- Provide file paths and line numbers for issues +- Show exact code fixes +- Focus on actionable items only +- Skip detailed analysis for clean PRs \ No newline at end of file From 67ef7e2e426186fcf6ed2f3496bb737b37bcaef9 Mon Sep 17 00:00:00 2001 From: "continue[bot]" <230936708+continue[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 03:04:45 +0000 Subject: [PATCH 6/6] Add Snyk: New vulnerabilities check --- .continue/checks/snyk-new-vulnerabilities.md | 46 ++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .continue/checks/snyk-new-vulnerabilities.md diff --git a/.continue/checks/snyk-new-vulnerabilities.md b/.continue/checks/snyk-new-vulnerabilities.md new file mode 100644 index 0000000..21f74f9 --- /dev/null +++ b/.continue/checks/snyk-new-vulnerabilities.md @@ -0,0 +1,46 @@ +--- +name: "Snyk: New vulnerabilities" +rules: continuedev/gh-pr-commit-workflow +--- + +A new Snyk vulnerability has been detected. Please investigate and resolve the issue. This should include the following steps: + +**Step 1: Investigate the Issue** +Make sure you understand the vulnerability, the options for resolution, and what their consequences are. + +**Step 2: Implement Fix** +- Focus on fixing the immediate issue identified +- Avoid overdoing it with error handling, cleaning up other problems, etc. +- Avoid making breaking changes +- Ensure the solution is robust and follows best practices. + +**Step 3: Create Draft Pull Request** +Create a draft pull request with the following structure: + +--- +**PR Title:** [Snyk] + +## Issue + +**Snyk Link:** []() +**Issue Type:** `` +**Priority:** +**Summary:** + +## Additional Context + +
+Snyk Issue Details + +```json + +``` + +
+ +--- +**Note for AI:** +- Replace `` with the actual agent session ID + +--- +Below is the webhook payload from the Snyk event: \ No newline at end of file