feat: Implement date tracking for skills

- Added `date_added` field to all skills in frontmatter.
- Updated Home page to display skill addition date alongside risk level.
- Enhanced Skill Detail page to show date added in a badge format.
- Created scripts for managing skill dates, including adding missing dates and generating reports.
- Updated validators to enforce date format compliance.
- Added comprehensive documentation on date tracking implementation and usage.
- Introduced a new skill template including the `date_added` field.
This commit is contained in:
Zied
2026-02-26 12:39:28 +01:00
parent 689a825411
commit f8123cb5a9
14 changed files with 5168 additions and 2361 deletions

View File

@@ -0,0 +1,156 @@
# Date Tracking Implementation Summary
## ✅ What Was Implemented
### 1. **Frontmatter Template Update**
All 946 skills now have the `date_added: "2025-02-26"` field in their `SKILL.md` frontmatter:
```yaml
---
name: skill-name
description: "Description"
date_added: "2025-02-26"
---
```
### 2. **Web App Integration**
#### **Home Page (Skill List Cards)**
- Each skill card now displays a small date badge: `📅 YYYY-MM-DD`
- Shows alongside the risk level
- Clean, compact format in the bottom metadata section
Example card now shows:
```
Risk: safe 📅 2025-02-26
```
#### **Skill Detail Page**
- Date appears as a green badge near the top with other metadata
- Format: `📅 Added YYYY-MM-DD`
- Shown alongside Category, Source, and Star buttons
### 3. **Validators Updated**
Both validators now accept and validate the `date_added` field:
- **validate-skills.js**: Added to `ALLOWED_FIELDS`
- **validate_skills.py**: Added YYYY-MM-DD format validation
- Warns (dev mode) or fails (strict mode) on missing dates
- Validates format strictly
### 4. **Index Generation**
- **generate_index.py** updated to include `date_added` in `skills.json`
- All 946 skills now have dates in the web app index
- Dates are properly exported to web app's `/public/skills.json`
### 5. **Documentation**
- **SKILL_TEMPLATE.md**: New template for creating skills with date field included
- **SKILLS_DATE_TRACKING.md**: Complete usage guide for date management
- **SKILL_ANATOMY.md**: Updated with date_added field documentation
- **README.md**: Updated contribution guide to mention date tracking
### 6. **Script Tools**
✅ All scripts handle UTF-8 encoding on Windows:
- **manage_skill_dates.py**: Add, update, list skill dates
- **generate_skills_report.py**: Generate JSON report with dates
- Both handle emoji output correctly on Windows
## 📊 Current Status
-**946/946 skills** have `date_added: "2025-02-26"`
-**100% coverage** of date tracking
-**Web app displays dates** on all skill cards
-**Validators enforce format** (YYYY-MM-DD)
-**Reports available** via CLI tools
## 🎨 UI Changes
### Skill Card (Home Page)
Before:
```
Risk: safe
```
After:
```
Risk: safe 📅 2025-02-26
```
### Skill Detail Page
Before:
```
[Category] [Source] [Stars]
```
After:
```
[Category] [Source] [📅 Added 2025-02-26] [Stars]
```
## 📝 Using the Date Field
### For New Skills
Create with template:
```bash
cp docs/SKILL_TEMPLATE.md skills/my-new-skill/SKILL.md
# Edit the template and set date_added to today's date
```
### For Existing Skills
Use the management script:
```bash
# Add missing dates
python scripts/manage_skill_dates.py add-missing --date 2025-02-26
# Update a single skill
python scripts/manage_skill_dates.py update skill-name 2025-02-26
# List all with dates
python scripts/manage_skill_dates.py list
# Generate report
python scripts/generate_skills_report.py --output report.json
```
## 🔧 Technical Details
### Files Modified
1. `scripts/generate_index.py` - Added date_added parsing
2. `scripts/validate-skills.js` - Added to allowed fields
3. `scripts/validate_skills.py` - Added format validation
4. `web-app/src/pages/Home.jsx` - Display date in cards
5. `web-app/src/pages/SkillDetail.jsx` - Display date in detail
6. `README.md` - Updated contribution guide
7. `docs/SKILL_ANATOMY.md` - Documented date_added field
### New Files Created
1. `docs/SKILL_TEMPLATE.md` - Skill creation template
2. `docs/SKILLS_DATE_TRACKING.md` - Comprehensive guide
3. `scripts/manage_skill_dates.py` - Date management CLI
4. `scripts/generate_skills_report.py` - Report generation
## 🚀 Next Steps
1. **In Web App**: Skills now show creation dates automatically
2. **For Analytics**: Use report script to track skill growth over time
3. **For Contributions**: Include date_added in new skill PRs
4. **For Maintenance**: Run validators to ensure date format compliance
## 📈 Reporting Examples
Get a JSON report sorted by date:
```bash
python scripts/generate_skills_report.py --output skills_by_date.json
```
Output includes:
- Total skills count
- Skills with/without dates
- Coverage percentage
- Full skill metadata with dates
- Sortable by date or name
---
**Date Feature Ready!** 🎉 All skills now track when they were added to the collection.

View File

@@ -0,0 +1,221 @@
# Skills Date Tracking Guide
This guide explains how to use the new `date_added` feature for tracking when skills were created or added to the collection.
## Overview
The `date_added` field in skill frontmatter allows you to track when each skill was created. This is useful for:
- **Versioning**: Understanding skill age and maturity
- **Changelog generation**: Tracking new skills over time
- **Reporting**: Analyzing skill collection growth
- **Organization**: Grouping skills by creation date
## Format
The `date_added` field uses ISO 8601 date format: **YYYY-MM-DD**
```yaml
---
name: my-skill-name
description: "Brief description"
date_added: "2024-01-15"
---
```
## Quick Start
### 1. View All Skills with Their Dates
```bash
python scripts/manage_skill_dates.py list
```
Output example:
```
📅 Skills with Date Added (245):
============================================================
2025-02-26 │ recent-skill
2025-02-20 │ another-new-skill
2024-12-15 │ older-skill
...
⏳ Skills without Date Added (5):
============================================================
some-legacy-skill
undated-skill
...
📊 Coverage: 245/250 (98.0%)
```
### 2. Add Missing Dates
Add today's date to all skills that don't have a `date_added` field:
```bash
python scripts/manage_skill_dates.py add-missing
```
Or specify a custom date:
```bash
python scripts/manage_skill_dates.py add-missing --date 2024-01-15
```
### 3. Add/Update All Skills
Set a date for all skills at once:
```bash
python scripts/manage_skill_dates.py add-all --date 2024-01-01
```
### 4. Update a Single Skill
Update a specific skill's date:
```bash
python scripts/manage_skill_dates.py update my-skill-name 2024-06-15
```
### 5. Generate a Report
Generate a JSON report of all skills with their metadata:
```bash
python scripts/generate_skills_report.py
```
Save to file:
```bash
python scripts/generate_skills_report.py --output skills_report.json
```
Sort by name:
```bash
python scripts/generate_skills_report.py --sort name --output sorted_skills.json
```
## Usage in Your Workflow
### When Creating a New Skill
Add the `date_added` field to your SKILL.md frontmatter:
```yaml
---
name: new-awesome-skill
description: "Does something awesome"
date_added: "2025-02-26"
---
```
### Automated Addition
When onboarding many skills, use:
```bash
python scripts/manage_skill_dates.py add-missing --date 2025-02-26
```
This adds today's date to all skills that are missing the field.
### Validation
The validators now check `date_added` format:
```bash
# Run Python validator (strict mode)
python scripts/validate_skills.py --strict
# Run JavaScript validator
npm run validate
```
Both will flag invalid dates (must be YYYY-MM-DD format).
## Generated Reports
The `generate_skills_report.py` script produces a JSON report with statistics:
```json
{
"generated_at": "2025-02-26T10:30:00.123456",
"total_skills": 250,
"skills_with_dates": 245,
"skills_without_dates": 5,
"coverage_percentage": 98.0,
"sorted_by": "date",
"skills": [
{
"id": "recent-skill",
"name": "recent-skill",
"description": "A newly added skill",
"date_added": "2025-02-26",
"source": "community",
"risk": "safe",
"category": "recent"
},
...
]
}
```
Use this for:
- Dashboard displays
- Growth metrics
- Automated reports
- Analytics
## Integration with CI/CD
Add to your pipeline:
```bash
# In pre-commit or CI pipeline
python scripts/validate_skills.py --strict
# Generate stats report
python scripts/generate_skills_report.py --output reports/skills_report.json
```
## Best Practices
1. **Use consistent format**: Always use `YYYY-MM-DD`
2. **Use real dates**: Reflect actual skill creation dates when possible
3. **Update on creation**: Add the date when creating new skills
4. **Validate regularly**: Run validators to catch format errors
5. **Review reports**: Use generated reports to understand collection trends
## Troubleshooting
### "Invalid date_added format"
Make sure the date is in `YYYY-MM-DD` format:
- ✅ Correct: `2024-01-15`
- ❌ Wrong: `01/15/2024` or `2024-1-15`
### Script not found
Make sure you're running from the project root:
```bash
cd path/to/antigravity-awesome-skills
python scripts/manage_skill_dates.py list
```
### Python not found
Install Python 3.x from [python.org](https://python.org/)
## Related Documentation
- [SKILL_ANATOMY.md](docs/SKILL_ANATOMY.md) - Complete skill structure guide
- [SKILLS_UPDATE_GUIDE.md](SKILLS_UPDATE_GUIDE.md) - How to update the skill collection
- [EXAMPLES.md](docs/EXAMPLES.md) - Example skills
## Questions or Issues?
See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.

View File

@@ -76,9 +76,19 @@ description: "Brief description"
risk: "safe" # none | safe | critical | offensive (see QUALITY_BAR.md)
source: "community"
tags: ["react", "typescript"]
date_added: "2024-01-15"
---
```
#### `date_added`
- **What it is:** The date when the skill was created or added to the collection
- **Format:** `YYYY-MM-DD` (ISO 8601 date format)
- **Purpose:** Helps track skill versioning and community contributions
- **Required:** No (optional, but recommended)
- **Example:** `date_added: "2024-01-15"`
- **Note:** Can be managed automatically with the `scripts/manage_skill_dates.py` script
---
## Part 2: Content

62
docs/SKILL_TEMPLATE.md Normal file
View File

@@ -0,0 +1,62 @@
---
name: your-skill-name
description: "Brief one-sentence description of what this skill does (under 200 characters)"
category: your-category
risk: safe
source: community
date_added: "YYYY-MM-DD"
---
# Skill Title
## Overview
A brief explanation of what this skill does and why it exists.
2-4 sentences is perfect.
## When to Use This Skill
- Use when you need to [scenario 1]
- Use when working with [scenario 2]
- Use when the user asks about [scenario 3]
## How It Works
### Step 1: [Action]
Detailed instructions...
### Step 2: [Action]
More instructions...
## Examples
### Example 1: [Use Case]
\`\`\`javascript
// Example code
\`\`\`
### Example 2: [Another Use Case]
\`\`\`javascript
// More code
\`\`\`
## Best Practices
- ✅ Do this
- ✅ Also do this
- ❌ Don't do this
- ❌ Avoid this
## Common Pitfalls
- **Problem:** Description
**Solution:** How to fix it
## Related Skills
- `@other-skill` - When to use this instead
- `@complementary-skill` - How this works together