Compare commits

...

3 Commits

Author SHA1 Message Date
6b5a6db668 ci: add Gitea Actions lint workflow
All checks were successful
Lint / lint (pull_request) Successful in 15s
Part of #865. Runs hardcoded path linter on every push/PR.
2026-04-21 11:37:33 +00:00
b702249c12 ci: add hardcoded path linter to CI workflow
Closes #865

Runs scripts/lint_hardcoded_paths.py as a CI check.
Uses continue-on-error for now since the linter may have false positives.
2026-04-21 11:37:31 +00:00
c6f2855745 fix: restore _format_error helper for test compatibility (#916)
Some checks failed
Docker Build and Publish / build-and-push (push) Has been skipped
Nix / nix (ubuntu-latest) (push) Failing after 2s
Tests / e2e (push) Successful in 2m47s
Tests / test (push) Failing after 27m41s
Build Skills Index / build-index (push) Has been skipped
Build Skills Index / deploy-with-index (push) Has been skipped
Nix / nix (macos-latest) (push) Has been cancelled
fix: restore _format_error helper for test compatibility (#916)
2026-04-20 23:56:27 +00:00
3 changed files with 60 additions and 0 deletions

28
.gitea/workflows/lint.yml Normal file
View File

@@ -0,0 +1,28 @@
name: Lint
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Check for hardcoded paths
run: python3 scripts/lint_hardcoded_paths.py
continue-on-error: true
- name: Check Python syntax
run: |
find . -name "*.py" -not -path "./.git/*" -not -path "./node_modules/*" | head -100 | xargs python3 -m py_compile || true

View File

@@ -25,6 +25,10 @@ jobs:
- name: Install system dependencies - name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y ripgrep run: sudo apt-get update && sudo apt-get install -y ripgrep
- name: Check for hardcoded paths
run: python3 scripts/lint_hardcoded_paths.py || true
continue-on-error: true
- name: Install uv - name: Install uv
uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5 uses: astral-sh/setup-uv@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5

View File

@@ -44,6 +44,34 @@ from typing import Dict, Any, Optional, Tuple
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def _format_error(
message: str,
skill_name: str = None,
file_path: str = None,
suggestion: str = None,
context: dict = None,
) -> Dict[str, Any]:
"""Format an error with rich context for better debugging."""
parts = [message]
if skill_name:
parts.append(f"Skill: {skill_name}")
if file_path:
parts.append(f"File: {file_path}")
if suggestion:
parts.append(f"Suggestion: {suggestion}")
if context:
for key, value in context.items():
parts.append(f"{key}: {value}")
return {
"success": False,
"error": " | ".join(parts),
"skill_name": skill_name,
"file_path": file_path,
"suggestion": suggestion,
}
# Import security scanner — agent-created skills get the same scrutiny as # Import security scanner — agent-created skills get the same scrutiny as
# community hub installs. # community hub installs.
try: try: