{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github-skalskip--courses","slug":"skalskip--courses","name":"courses","type":"repo","url":"https://github.com/SkalskiP/courses","page_url":"https://unfragile.ai/skalskip--courses","categories":["research-search","image-generation"],"tags":["computer-vision","deep-learning","deep-neural-networks","generative-model","machine-learning","mlops","multimodal","natural-language-processing","nlp","stable-diffusion","transformers","tutorial"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"pending_review","verified":false},"capabilities":[{"id":"github-skalskip--courses__cap_0","uri":"capability://data.processing.analysis.csv.to.markdown.course.table.generation.with.automated.formatting","name":"csv-to-markdown course table generation with automated formatting","description":"Processes structured course metadata from a CSV file and generates formatted markdown tables with visual difficulty indicators, category tags, and hyperlinked course titles. The automation script (generate.py) reads CSV columns (topic, format, difficulty, release_year, price, url, author), transforms difficulty numeric values (1-3) into visual representations (green squares), and inserts the rendered table into README.md at marked insertion points using token-based placeholder detection. This decouples data storage from presentation, enabling contributors to add courses via CSV without markdown formatting knowledge.","intents":["I want to add a new AI course to the collection without manually editing markdown tables","I need to regenerate course listings across multiple language versions from a single source of truth","I want to filter and display courses by topic, difficulty level, and format programmatically","I need to maintain consistent table formatting across README updates without manual reformatting"],"best_for":["community-driven course repository maintainers","multilingual documentation projects with shared data sources","teams managing curated learning resource collections"],"limitations":["CSV schema is rigid — adding new metadata fields requires script modification","Token-based insertion assumes specific README structure — malformed placeholders cause generation failures","No validation of course URLs or metadata completeness before table generation","Difficulty mapping is hardcoded (1-3 scale) — non-standard difficulty schemes require code changes"],"requires":["Python 3.6+","CSV file with columns: topic, format, difficulty, release_year, price, url, author, title","README.md with autogenerated table tokens (e.g., <!-- AUTOGENERATED_COURSES_TABLE_START -->)","Write permissions to README.md file"],"input_types":["CSV (structured course metadata)","Markdown (README template with insertion tokens)"],"output_types":["Markdown (formatted course tables with embedded HTML/Unicode visual indicators)"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_1","uri":"capability://text.generation.language.multilingual.readme.generation.with.language.specific.course.filtering","name":"multilingual readme generation with language-specific course filtering","description":"Generates translated versions of the main README file in multiple languages (detected from language-specific README files in the repository root), applying language-specific course filtering and localized metadata labels. The system maintains a single CSV source of truth while producing language-specific markdown outputs with translated category names, difficulty labels, and instructional text. Each language version can be independently updated by running the automation script with language-specific configuration, ensuring consistency across translations while allowing community translators to contribute language files.","intents":["I want to provide course recommendations in multiple languages without duplicating the course CSV data","I need to translate course category names and difficulty labels while keeping course URLs and metadata synchronized","I want contributors to translate the README without needing to manually update course tables in each language version","I need to ensure that new courses added to the CSV automatically appear in all language versions"],"best_for":["international AI education communities with non-English speakers","open-source projects requiring multilingual documentation","teams managing course collections across multiple language markets"],"limitations":["Translation of course descriptions and metadata labels requires manual effort — only README structure is automated","No built-in translation API integration — relies on community contributors for language files","Language detection is file-based (README.{lang}.md) — requires explicit file creation for each language","Difficulty and format labels must be manually translated in language-specific configuration — no automatic translation"],"requires":["Python 3.6+","Language-specific README template files (e.g., README.es.md, README.fr.md)","CSV file with course metadata","Language-specific label mappings (difficulty, format, category translations)"],"input_types":["CSV (course metadata)","Markdown templates (language-specific README files with insertion tokens)","Language configuration (difficulty/format label translations)"],"output_types":["Markdown (language-specific README files with translated tables and localized labels)"],"categories":["text-generation-language","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_10","uri":"capability://data.processing.analysis.course.url.management.and.hyperlink.generation","name":"course url management and hyperlink generation","description":"Stores course URLs in the 'url' field of CSV and generates clickable hyperlinks in markdown tables during table generation, enabling direct access to course resources. The URL field contains the full course link (e.g., 'https://youtube.com/...'), which is rendered as a markdown hyperlink in the generated tables, allowing learners to click directly to the course. This provides seamless navigation from the course collection to actual learning resources.","intents":["I want to quickly access a course from the collection without copying URLs","I need to verify that course links are valid and up-to-date","I want to track course URLs for maintenance and link validation","I need to generate clickable course links in markdown documentation"],"best_for":["learners accessing courses directly from the collection","repository maintainers validating course links","documentation systems generating course references"],"limitations":["No built-in link validation — broken or outdated URLs are not detected","URLs may change over time — metadata becomes stale without periodic updates","No support for alternative URLs or mirrors — single URL per course","URL format is not validated — malformed URLs may be included in tables"],"requires":["CSV file with 'url' column populated with valid HTTP/HTTPS URLs"],"input_types":["CSV (course metadata with url field)"],"output_types":["Markdown (course tables with clickable hyperlinks)"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_2","uri":"capability://data.processing.analysis.course.metadata.schema.validation.and.structured.data.extraction","name":"course metadata schema validation and structured data extraction","description":"Defines and enforces a structured schema for course metadata (topic, format, difficulty, release_year, price, url, author, title) stored in CSV format, enabling programmatic filtering, sorting, and validation of course entries. The schema maps each CSV column to a specific data type and semantic meaning (e.g., difficulty as integer 1-3, price as categorical 'free'/'paid', format as enumerated type like 'YouTube playlist'). Validation occurs during CSV parsing, detecting missing fields, invalid difficulty levels, and malformed URLs before table generation, ensuring data quality across contributions.","intents":["I want to validate new course submissions to ensure they meet metadata requirements before merging","I need to filter courses by difficulty level, topic, or format programmatically","I want to detect and prevent duplicate course entries or invalid data in the CSV","I need to generate course statistics (e.g., count by topic, average difficulty) from structured metadata"],"best_for":["repository maintainers enforcing data quality standards","teams building course recommendation systems from curated metadata","projects requiring programmatic course filtering and analytics"],"limitations":["Schema is hardcoded in Python script — schema changes require code modification, not configuration","No built-in duplicate detection — relies on manual review or external tools","Validation errors are logged but don't prevent table generation — invalid entries appear in output","No support for optional or conditional fields — all courses must have complete metadata"],"requires":["Python 3.6+","CSV file with required columns: topic, format, difficulty, release_year, price, url, author, title","Difficulty values must be integers 1-3","Price field must be 'free' or 'paid'"],"input_types":["CSV (course metadata with required columns)"],"output_types":["Structured data (parsed course objects with validated fields)","Validation reports (error logs for invalid entries)"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_3","uri":"capability://automation.workflow.community.contribution.workflow.with.structured.data.entry","name":"community contribution workflow with structured data entry","description":"Provides a contribution framework that guides community members to add new courses by editing a single CSV file rather than markdown, reducing formatting barriers and enabling non-technical contributors to participate. The workflow includes documentation (CONTRIBUTING.md) explaining the CSV schema, example entries, and step-by-step instructions for adding courses, submitting pull requests, and translating content. The structured data approach means contributors only need to fill in CSV columns (title, url, topic, difficulty, etc.) without understanding markdown syntax, lowering the barrier to entry for course curation.","intents":["I want to contribute a new course but don't know markdown syntax","I need clear instructions on what metadata fields are required for a course entry","I want to translate the README into my language without duplicating course data","I need to understand the review process and expectations for course submissions"],"best_for":["open-source communities seeking to scale course curation through contributions","non-technical educators and learners wanting to share resources","international teams contributing translations and localized course recommendations"],"limitations":["Contribution guidelines are documentation-based — no automated validation of contribution quality","No built-in mechanism to verify course quality, relevance, or accuracy before merging","CSV editing requires basic familiarity with spreadsheet tools or text editors","Translation contributions require manual review — no automated translation quality checks"],"requires":["GitHub account","Git knowledge (fork, branch, commit, pull request workflow)","CSV editing capability (spreadsheet tool or text editor)","Understanding of course metadata schema (topic, difficulty, format, etc.)"],"input_types":["CSV rows (new course entries)","Markdown (translation contributions for README files)"],"output_types":["Pull requests (contributions to be reviewed and merged)"],"categories":["automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_4","uri":"capability://data.processing.analysis.course.categorization.and.topic.based.filtering.system","name":"course categorization and topic-based filtering system","description":"Organizes courses into semantic categories (Deep Learning, Natural Language Processing, Computer Vision, MLOps, Multimodal, etc.) stored as the 'topic' field in CSV, enabling filtering and display of courses by subject area. The system maps topic values to category labels displayed in markdown tables, allowing users to quickly find courses relevant to their learning goals. Topics are rendered as inline category tags in the generated markdown, making it easy to scan courses by subject and enabling programmatic filtering for course recommendation systems.","intents":["I want to find all courses related to Natural Language Processing","I need to filter courses by topic to build a personalized learning path","I want to see what topics are covered in the course collection at a glance","I need to recommend courses to learners based on their area of interest"],"best_for":["learners browsing curated course collections by subject area","educators building curriculum recommendations","course recommendation systems filtering by topic"],"limitations":["Topics are single-valued per course — courses spanning multiple domains must choose primary topic","Topic list is predefined in CSV schema — adding new topics requires data migration","No hierarchical topic structure (e.g., 'Deep Learning' as subtopic of 'Machine Learning') — flat taxonomy only","Topic filtering requires manual markdown parsing or programmatic CSV access — no built-in search interface"],"requires":["CSV file with 'topic' column populated with valid topic values","Topic values must match predefined list (Deep Learning, NLP, Computer Vision, etc.)"],"input_types":["CSV (course metadata with topic field)"],"output_types":["Markdown (course tables with topic category tags)","Filtered course lists (programmatic filtering by topic)"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_5","uri":"capability://data.processing.analysis.difficulty.level.assessment.and.visual.encoding","name":"difficulty level assessment and visual encoding","description":"Assigns difficulty levels (1-3 scale) to courses and encodes them visually in markdown tables using Unicode square symbols (e.g., 🟩🟩 for level 2), enabling learners to quickly assess course complexity without reading descriptions. The difficulty mapping is defined in the automation script (DIFFICULTY_MAP constant) and transforms numeric CSV values into visual representations during table generation. This provides at-a-glance difficulty assessment in the rendered markdown, helping learners self-select courses matching their skill level.","intents":["I want to find beginner-friendly AI courses without advanced prerequisites","I need to assess course difficulty before committing time to learning","I want to build a learning path progressing from beginner to advanced courses","I need to recommend courses appropriate for learners at different skill levels"],"best_for":["learners self-selecting courses by skill level","educators building progressive learning paths","course recommendation systems filtering by difficulty"],"limitations":["Difficulty scale is fixed at 1-3 — no support for finer-grained difficulty assessment","Difficulty is subjective and course-dependent — no standardized assessment methodology","Visual encoding (Unicode squares) may not render consistently across all markdown viewers","No mechanism to validate difficulty assignments — relies on contributor judgment"],"requires":["CSV file with 'difficulty' column populated with integer values 1-3","Markdown viewer supporting Unicode square symbols (🟩)"],"input_types":["CSV (course metadata with difficulty field as integer 1-3)"],"output_types":["Markdown (course tables with visual difficulty indicators using Unicode squares)"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_6","uri":"capability://data.processing.analysis.course.format.classification.and.resource.type.indication","name":"course format classification and resource type indication","description":"Classifies courses by delivery format (YouTube playlist, university course, blog series, book, interactive tutorial, etc.) stored as the 'format' field in CSV, enabling learners to filter by preferred learning modality. The format field indicates the type of educational resource, helping learners choose courses matching their learning style (video-based, text-based, interactive, etc.). Format values are displayed in markdown tables, providing quick identification of resource type without requiring detailed course descriptions.","intents":["I prefer learning from video content — show me YouTube-based courses","I want to find interactive tutorials rather than lecture-based courses","I need to filter courses by resource type to match my learning style","I want to see what formats are available in the course collection"],"best_for":["learners filtering courses by preferred learning modality","educators building diverse learning resources","course recommendation systems matching learner preferences"],"limitations":["Format is single-valued per course — courses with multiple formats must choose primary format","Format list is predefined — adding new formats requires CSV schema modification","No standardized format taxonomy — format values are free-form strings","Format filtering requires manual markdown parsing or programmatic CSV access"],"requires":["CSV file with 'format' column populated with format values (YouTube playlist, university course, blog series, etc.)"],"input_types":["CSV (course metadata with format field)"],"output_types":["Markdown (course tables with format indicators)","Filtered course lists (programmatic filtering by format)"],"categories":["data-processing-analysis","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_7","uri":"capability://data.processing.analysis.course.recency.tracking.and.release.year.metadata","name":"course recency tracking and release year metadata","description":"Captures and displays the release year of each course (stored as 'release_year' field in CSV) to help learners assess content currency and relevance. The release year is included in course metadata and can be used to filter for recent courses or identify outdated content. This enables learners to prioritize newer courses covering recent AI developments and helps maintainers identify courses that may need updating or replacement.","intents":["I want to find recent courses covering the latest AI developments","I need to identify outdated courses that should be replaced or updated","I want to assess whether a course covers current best practices","I need to filter courses by publication year to build a modern learning path"],"best_for":["learners seeking current AI knowledge and recent developments","repository maintainers identifying outdated content","educators building curriculum with contemporary resources"],"limitations":["Release year is coarse-grained — doesn't capture update frequency or content freshness","No mechanism to validate release year accuracy — relies on contributor research","No automated deprecation or archival of old courses — requires manual review","Release year alone doesn't indicate content quality or relevance — requires manual assessment"],"requires":["CSV file with 'release_year' column populated with integer year values"],"input_types":["CSV (course metadata with release_year field)"],"output_types":["Markdown (course tables with release year information)","Filtered course lists (programmatic filtering by year range)"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_8","uri":"capability://data.processing.analysis.course.pricing.and.accessibility.metadata","name":"course pricing and accessibility metadata","description":"Tracks course pricing information (free vs. paid) in the 'price' field of CSV, enabling learners to filter for free educational resources and maintainers to prioritize freely-available courses. The price field is categorical ('free' or 'paid') and displayed in markdown tables, helping learners identify no-cost learning opportunities. This supports the repository's mission to provide accessible AI education by highlighting free resources.","intents":["I want to find free AI courses without paid subscriptions","I need to identify which courses are accessible to learners with limited budgets","I want to filter the course collection to show only free resources","I need to assess the cost-benefit of paid courses in the collection"],"best_for":["learners with limited budgets seeking free educational resources","educators building cost-free curriculum","repository maintainers prioritizing accessible content"],"limitations":["Price field is binary (free/paid) — doesn't capture subscription costs or partial free access","No mechanism to validate pricing accuracy — relies on contributor research","Free courses may have limited content or require paid upgrades — field doesn't capture this nuance","Pricing changes over time — metadata may become stale"],"requires":["CSV file with 'price' column populated with 'free' or 'paid' values"],"input_types":["CSV (course metadata with price field)"],"output_types":["Markdown (course tables with pricing information)","Filtered course lists (programmatic filtering for free courses)"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-skalskip--courses__cap_9","uri":"capability://data.processing.analysis.course.source.attribution.and.author.tracking","name":"course source attribution and author tracking","description":"Captures course author or institution (stored as 'author' field in CSV) to provide source attribution and enable learners to identify courses from trusted educators or organizations. The author field displays the creator or institution offering the course (e.g., 'Stanford University', 'Jeremy Howard'), helping learners assess course credibility and find courses from preferred educators. This supports academic integrity and helps learners identify high-quality resources from recognized experts.","intents":["I want to find courses from Stanford, MIT, or other prestigious institutions","I need to identify courses taught by recognized AI experts","I want to assess course credibility based on the author or institution","I need to filter courses by educator to find all resources from a specific instructor"],"best_for":["learners seeking courses from prestigious institutions or recognized experts","educators building curriculum from trusted sources","researchers tracking course offerings by institution"],"limitations":["Author field is single-valued — courses with multiple instructors must choose primary author","No standardized author naming — entries may be inconsistent (e.g., 'Stanford University' vs. 'Stanford')","Author prestige is subjective — field doesn't capture institutional ranking or expert credentials","No mechanism to validate author accuracy — relies on contributor research"],"requires":["CSV file with 'author' column populated with author/institution names"],"input_types":["CSV (course metadata with author field)"],"output_types":["Markdown (course tables with author/institution attribution)","Filtered course lists (programmatic filtering by author)"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":45,"verified":false,"data_access_risk":"high","permissions":["Python 3.6+","CSV file with columns: topic, format, difficulty, release_year, price, url, author, title","README.md with autogenerated table tokens (e.g., <!-- AUTOGENERATED_COURSES_TABLE_START -->)","Write permissions to README.md file","Language-specific README template files (e.g., README.es.md, README.fr.md)","CSV file with course metadata","Language-specific label mappings (difficulty, format, category translations)","CSV file with 'url' column populated with valid HTTP/HTTPS URLs","CSV file with required columns: topic, format, difficulty, release_year, price, url, author, title","Difficulty values must be integers 1-3"],"failure_modes":["CSV schema is rigid — adding new metadata fields requires script modification","Token-based insertion assumes specific README structure — malformed placeholders cause generation failures","No validation of course URLs or metadata completeness before table generation","Difficulty mapping is hardcoded (1-3 scale) — non-standard difficulty schemes require code changes","Translation of course descriptions and metadata labels requires manual effort — only README structure is automated","No built-in translation API integration — relies on community contributors for language files","Language detection is file-based (README.{lang}.md) — requires explicit file creation for each language","Difficulty and format labels must be manually translated in language-specific configuration — no automatic translation","No built-in link validation — broken or outdated URLs are not detected","URLs may change over time — metadata becomes stale without periodic updates","builder identity is not verified yet","artifact is still pending review"],"rank_breakdown":{"adoption":0.6127402655421946,"quality":0.37,"ecosystem":0.7000000000000001,"match_graph":0.25,"freshness":0.27,"weights":{"adoption":0.3,"quality":0.2,"ecosystem":0.15,"match_graph":0.3,"freshness":0.05}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"pending_review","updated_at":"2026-05-24T12:16:22.064Z","last_scraped_at":"2026-05-03T13:58:42.319Z","last_commit":"2024-04-22T09:19:00Z"},"community":{"stars":6438,"forks":594,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=skalskip--courses","compare_url":"https://unfragile.ai/compare?artifact=skalskip--courses"}},"signature":"L2A0Cem8ONHdcclCoMWek1c+8Gg9UltWqmkEl+AsP2Gm3l0Ot2XThT5F+73pV5oD+dGiYSlSTQiRV/IfOCOJAw==","signedAt":"2026-06-22T13:26:18.098Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/skalskip--courses","artifact":"https://unfragile.ai/skalskip--courses","verify":"https://unfragile.ai/api/v1/verify?slug=skalskip--courses","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}