{
  "schemaVersion": "1.0",
  "item": {
    "slug": "foam-notes",
    "name": "Foam Notes",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/Hegghammer/foam-notes",
    "canonicalUrl": "https://clawhub.ai/Hegghammer/foam-notes",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/foam-notes",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=foam-notes",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "config.json",
      "assets/templates/daily-note.md",
      "assets/templates/new-note.md",
      "references/configuration.md",
      "references/wikilinks.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/foam-notes"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/foam-notes",
    "agentPageUrl": "https://openagent3.xyz/skills/foam-notes/agent",
    "manifestUrl": "https://openagent3.xyz/skills/foam-notes/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/foam-notes/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Foam Notes",
        "body": "Work with Foam note-taking workspaces in VS Code. Foam is a free, open-source personal knowledge management system using standard Markdown files with wikilinks."
      },
      {
        "title": "Quick Reference",
        "body": "Wikilinks: [[note-name]] — connect notes bidirectionally\nEmbeds: ![[note-name]] — include content from other notes\nBacklinks: Automatically discovered connections to current note\nTags: #tag or frontmatter tags: [tag1, tag2]\nDaily Notes: Alt+D or command \"Foam: Open Daily Note\""
      },
      {
        "title": "Configuration",
        "body": "Copy config.json.template to config.json and edit to taste:\n\n{\n  \"foam_root\": \"/path/to/your/foam-workspace\",\n  \"default_template\": \"new-note\",\n  \"default_notes_folder\": \"notes\",\n  \"daily_note_folder\": \"journals\",\n  \"author\": \"Your Name\",\n  \"wikilinks\": {\n    \"title_stopwords\": [\"home\", \"index\", \"readme\", \"draft\", \"template\"],\n    \"suffixes\": [\"-hub\"],\n    \"min_length\": 3\n  },\n  \"tags\": {\n    \"editorial_stopwords\": [\"notes\", \"note\", \"foam\", \"markdown\", \"file\", \"page\", \"section\"]\n  }\n}\n\nLocation: config.json in the skill directory (next to SKILL.md)."
      },
      {
        "title": "Config keys",
        "body": "KeyTypeDefaultDescriptionfoam_rootstring\"\" (auto-detect)Path to your Foam workspacedefault_templatestring\"new-note\"Template for new notesdefault_notes_folderstring\"notes\"Subfolder for new notesdaily_note_folderstring\"journals\"Subfolder for daily notesauthorstring\"\"Author name for note creationwikilinks.title_stopwordslist[]Note titles to never match as wikilinks (e.g. \"home\", \"index\", \"todo\"). Add any generic filenames from your workspace that produce false positives.wikilinks.suffixeslist[]Filename suffixes whose base stem should also register as a match key. For example, if you name your hub/MOC notes docker-hub.md, add \"-hub\" here so that \"docker\" in prose matches docker-hub.md.wikilinks.min_lengthint3Minimum key length to consider for wikilink matchingtags.editorial_stopwordslist[]Domain-specific words to exclude from tag suggestions (in addition to standard English stopwords)."
      },
      {
        "title": "Foam root priority order (highest to lowest)",
        "body": "--foam-root CLI argument\nFOAM_WORKSPACE environment variable\nfoam_root in config.json\nAuto-detect by finding .foam or .vscode directory\nCurrent working directory\n\nSee references/configuration.md for complete documentation."
      },
      {
        "title": "Scripts",
        "body": "All scripts support --foam-root to override the workspace path."
      },
      {
        "title": "init_templates.py",
        "body": "Initialize .foam/templates/ with starter templates from the official Foam template:\n\npython3 scripts/init_templates.py              # Copy to current workspace\npython3 scripts/init_templates.py --foam-root ~/notes\npython3 scripts/init_templates.py --list      # Show available templates\npython3 scripts/init_templates.py --force     # Overwrite existing\npython3 scripts/init_templates.py --dry-run   # Preview what would be copied\n\nTemplates included:\n\nnew-note.md — Default template for new notes\ndaily-note.md — Template for daily notes\nyour-first-template.md — Example template demonstrating VS Code snippets"
      },
      {
        "title": "create_note.py",
        "body": "Create a new note from template:\n\npython3 scripts/create_note.py \"My New Idea\"\npython3 scripts/create_note.py \"Meeting Notes\" --template meeting\npython3 scripts/create_note.py \"Research Topic\" --dir research/"
      },
      {
        "title": "find_backlinks.py",
        "body": "Find all notes that link to a given note:\n\npython3 scripts/find_backlinks.py \"Machine Learning\"\npython3 scripts/find_backlinks.py \"ml-basics\" --format json"
      },
      {
        "title": "search_tags.py",
        "body": "Find notes by tag:\n\npython3 scripts/search_tags.py \"#research\"\npython3 scripts/search_tags.py machine-learning --include-frontmatter"
      },
      {
        "title": "list_tags.py",
        "body": "List all tags with usage counts:\n\npython3 scripts/list_tags.py\npython3 scripts/list_tags.py --hierarchy --min-count 3"
      },
      {
        "title": "graph_summary.py",
        "body": "Analyze the knowledge graph:\n\npython3 scripts/graph_summary.py\npython3 scripts/graph_summary.py --format json"
      },
      {
        "title": "daily_note.py",
        "body": "Create daily notes:\n\npython3 scripts/daily_note.py\npython3 scripts/daily_note.py --yesterday\npython3 scripts/daily_note.py --template custom-daily\npython3 scripts/daily_note.py --print-path   # Just output the path"
      },
      {
        "title": "suggest_wikilinks.py",
        "body": "Suggest wikilinks by finding text in a note that matches existing note titles:\n\npython3 scripts/suggest_wikilinks.py my-note.md              # Interactive mode\npython3 scripts/suggest_wikilinks.py my-note.md --apply 1,3,5  # Auto-apply\npython3 scripts/suggest_wikilinks.py my-note.md --auto-apply   # Apply all\npython3 scripts/suggest_wikilinks.py my-note.md --dry-run      # Preview only\npython3 scripts/suggest_wikilinks.py my-note.md --with-aliases # Create [[target|text]] format\n\nThe script scans the note content and identifies words/phrases that match existing note titles in the archive. It presents them as a numbered list:\n\n1. Line 12, col 8\n   Text: \"machine learning\"\n   Link to: [[machine-learning]]\n   Context: ...working on machine learning projects...\n\nWikilink formats:\n\nDefault: [[target]] — clean, simple links\nWith --with-aliases: [[target|display text]] — preserves original text as alias\n\nRespond with:\n\nNumbers to implement (e.g., 1 3 5)\nall to apply all suggestions\nnone to cancel"
      },
      {
        "title": "suggest_tags.py",
        "body": "Suggest tags for a note based on content and existing tags in the archive:\n\npython3 scripts/suggest_tags.py my-note.md              # Interactive mode\npython3 scripts/suggest_tags.py my-note.md --apply all  # Add all suggested\npython3 scripts/suggest_tags.py my-note.md --apply existing  # Only existing tags\npython3 scripts/suggest_tags.py my-note.md --frontmatter     # Add to frontmatter\n\nThe script:\n\nExtracts keywords from note content\nFinds matching existing tags (with usage counts)\nSuggests new tags based on content analysis\n\nPresented as numbered list with two sections:\n\nExisting Tags — Already used in your archive\nNew Suggestions — Extracted from current note content\n\nRespond with:\n\nNumbers (e.g., 1 3 5)\nall — all suggestions\nexisting — only existing tags\nnew — only new suggestions\nnone — cancel\nOr type custom tags: #mytag #project"
      },
      {
        "title": "delete_note.py",
        "body": "Delete notes with optional backup and automatic backlink handling:\n\npython3 scripts/delete_note.py \"Old Note\"                    # Interactive deletion\npython3 scripts/delete_note.py \"Old Note\" --force          # Skip confirmation\npython3 scripts/delete_note.py \"Old Note\" --backup         # Move to .foam/trash/\npython3 scripts/delete_note.py \"Old Note\" --fix-links      # Remove wikilinks from other notes\n\nFeatures:\n\nBackup mode: Moves note to .foam/trash/ instead of permanent deletion\nBacklink detection: Shows which notes link to the one being deleted\nLink fixing: Automatically removes wikilinks from other notes\nConfirmation: Prompts before deletion (skip with --force)"
      },
      {
        "title": "rename_note.py",
        "body": "Rename notes and automatically update all wikilinks:\n\npython3 scripts/rename_note.py \"Old Name\" \"New Name\"       # Interactive rename\npython3 scripts/rename_note.py \"Old Name\" \"New Name\" --force  # Skip confirmation\n\nFeatures:\n\nAutomatic wikilink updates: Finds and updates all [[old-name]] references\nFile rename: Changes filename from old-name.md to new-name.md\nTitle preservation: Keeps note content intact, only updates links\nConfirmation: Shows affected notes before proceeding"
      },
      {
        "title": "When to Use This Skill",
        "body": "Use this skill when:\n\nCreating or editing notes in a Foam workspace\nWorking with wikilinks, backlinks, or the knowledge graph\nAnalyzing note relationships and connections\nSetting up or configuring Foam templates\nWorking with daily notes or tags\nPublishing Foam workspaces to static sites"
      },
      {
        "title": "Foam Workspace Structure",
        "body": "foam-workspace/\n├── .vscode/\n│   ├── extensions.json      # Recommended extensions\n│   └── settings.json        # VS Code settings\n├── .foam/\n│   └── templates/           # Note templates (.md and .js)\n├── journals/                # Daily notes (default location)\n├── attachments/             # Images and files\n├── *.md                     # Your notes\n└── foam.json (optional)     # Foam configuration"
      },
      {
        "title": "Wikilinks",
        "body": "Create connections between notes using double brackets:\n\nSee also [[related-concept]] for more information.\n\nAutocomplete with [[ + type note name\nNavigate with Ctrl+Click (or Cmd+Click on Mac)\nCreate new notes by clicking non-existent links\nLink to sections: [[note-name#Section Title]]\n\nSee references/wikilinks.md for complete documentation."
      },
      {
        "title": "Backlinks",
        "body": "Backlinks show which notes reference the current note — discovered automatically by Foam.\n\nAccess via:\n\nCommand palette: \"Explorer: Focus on Connections\"\nShows forward links, backlinks, or both\n\nUse backlinks for:\n\nFinding unexpected connections between ideas\nIdentifying hub concepts (notes with many backlinks)\nBuilding context around ideas across domains\n\nSee references/backlinks.md for complete documentation."
      },
      {
        "title": "Tags",
        "body": "Organize notes beyond wikilinks:\n\n# Inline tags\n#machine-learning #research #in-progress\n\n# Frontmatter tags\n---\ntags: [machine-learning, research, in-progress]\n---\n\nHierarchical: #programming/python\nBrowse in Tag Explorer panel\nSearch: \"Foam: Search Tag\"\n\nSee references/tags.md for complete documentation."
      },
      {
        "title": "Daily Notes",
        "body": "Quick daily journaling:\n\nShortcut: Alt+D\nCommand: \"Foam: Open Daily Note\"\nSnippets: /today, /yesterday, /tomorrow\n\nTemplate: .foam/templates/daily-note.md\n\nSee references/daily-notes.md for complete documentation."
      },
      {
        "title": "Templates",
        "body": "Customize note creation. Foam looks for templates in .foam/templates/.\n\nTo initialize starter templates:\n\npython3 scripts/init_templates.py\n\nThis copies official Foam templates to your workspace:\n\nnew-note.md — Default template\ndaily-note.md — Daily notes template\nyour-first-template.md — Example with VS Code snippets\n\nMarkdown templates (.md):\n\n---\nfoam_template:\n  filepath: '$FOAM_CURRENT_DIR/$FOAM_SLUG.md'\n---\n\n# $FOAM_TITLE\n\nCreated: $FOAM_DATE_YEAR-$FOAM_DATE_MONTH-$FOAM_DATE_DATE\n\n$FOAM_SELECTED_TEXT\n\nJavaScript templates (.js) — for smart, context-aware templates.\n\nSee references/templates.md for complete documentation."
      },
      {
        "title": "Creating a New Note",
        "body": "When creating notes programmatically (not via VS Code), always read the workspace template in .foam/templates/new-note.md first and follow its structure exactly.\n\nIn VS Code:\n\nUse \"Foam: Create New Note\" for default template\nUse \"Foam: Create New Note From Template\" to choose template\nOr click a non-existent wikilink [[new-note]]"
      },
      {
        "title": "Finding Note Relationships",
        "body": "Backlinks: Check Connections panel for linked notes\nGraph View: Command \"Foam: Show Graph\" for visual network\nTag Explorer: Browse notes by tag"
      },
      {
        "title": "Working with Embeds",
        "body": "Include content from other notes:\n\n![[glossary]]\n\nSee the full definition above."
      },
      {
        "title": "Publishing",
        "body": "Foam can publish to static sites:\n\nGitHub Pages (built-in template)\nNetlify\nVercel\nGitLab Pages\nCustom static site generators (Gatsby, MkDocs, etc.)\n\nSee recipes in Foam documentation for publishing options."
      },
      {
        "title": "Foam vs Obsidian",
        "body": "FeatureFoamObsidianWikilinks[[note]][[note]]Embeds![[note]]![[note]]PlatformVS CodeDedicated appPlugin ecosystemMinimal (VS Code extensions)ExtensiveFile formatStandard MarkdownMarkdown with extensionsConfiguration.vscode/settings.json.obsidian/ folderPriceFreeFreemium\n\nBoth use the same core linking syntax. Foam prioritizes simplicity and standard formats."
      },
      {
        "title": "Configuration",
        "body": "Key .vscode/settings.json options:\n\n{\n  \"foam.openDailyNote.onStartup\": true,\n  \"foam.dateSnippets.format\": \"yyyy-mm-dd\",\n  \"markdown.styles\": [\".foam/css/custom.css\"]\n}"
      },
      {
        "title": "Foam CLI Commands",
        "body": "Key VS Code commands:\n\nFoam: Open Daily Note — Create/open today's note\nFoam: Create New Note — Create from default template\nFoam: Create New Note From Template — Choose template\nFoam: Create New Template — Create new template\nFoam: Show Graph — Visualize knowledge graph\nFoam: Search Tag — Search for tagged notes\nExplorer: Focus on Connections — Show backlinks panel"
      },
      {
        "title": "Reference Documentation",
        "body": "foam-overview.md — General Foam introduction and philosophy\nwikilinks.md — Complete wikilinks guide\nbacklinks.md — Backlinks and knowledge discovery\ntags.md — Tag organization and filtering\ndaily-notes.md — Daily note workflows\ntemplates.md — Template creation (Markdown and JavaScript)\n\nRead these files for detailed information on specific features."
      },
      {
        "title": "External Resources",
        "body": "Official site: https://foamnotes.com\nGitHub: https://github.com/foambubble/foam\nDiscord: https://foambubble.github.io/join-discord/w"
      },
      {
        "title": "Tips",
        "body": "Start small: Foam works best with consistent note-taking habits\nLink liberally: Create wikilinks even to non-existent notes (placeholders)\nUse the graph: Visualize your knowledge network to find gaps\nTrust the process: Backlinks reveal connections you didn't plan\nKeep it standard: Foam uses standard Markdown — your notes remain portable"
      }
    ],
    "body": "Foam Notes\n\nWork with Foam note-taking workspaces in VS Code. Foam is a free, open-source personal knowledge management system using standard Markdown files with wikilinks.\n\nQuick Reference\nWikilinks: [[note-name]] — connect notes bidirectionally\nEmbeds: ![[note-name]] — include content from other notes\nBacklinks: Automatically discovered connections to current note\nTags: #tag or frontmatter tags: [tag1, tag2]\nDaily Notes: Alt+D or command \"Foam: Open Daily Note\"\nConfiguration\n\nCopy config.json.template to config.json and edit to taste:\n\n{\n  \"foam_root\": \"/path/to/your/foam-workspace\",\n  \"default_template\": \"new-note\",\n  \"default_notes_folder\": \"notes\",\n  \"daily_note_folder\": \"journals\",\n  \"author\": \"Your Name\",\n  \"wikilinks\": {\n    \"title_stopwords\": [\"home\", \"index\", \"readme\", \"draft\", \"template\"],\n    \"suffixes\": [\"-hub\"],\n    \"min_length\": 3\n  },\n  \"tags\": {\n    \"editorial_stopwords\": [\"notes\", \"note\", \"foam\", \"markdown\", \"file\", \"page\", \"section\"]\n  }\n}\n\n\nLocation: config.json in the skill directory (next to SKILL.md).\n\nConfig keys\nKey\tType\tDefault\tDescription\nfoam_root\tstring\t\"\" (auto-detect)\tPath to your Foam workspace\ndefault_template\tstring\t\"new-note\"\tTemplate for new notes\ndefault_notes_folder\tstring\t\"notes\"\tSubfolder for new notes\ndaily_note_folder\tstring\t\"journals\"\tSubfolder for daily notes\nauthor\tstring\t\"\"\tAuthor name for note creation\nwikilinks.title_stopwords\tlist\t[]\tNote titles to never match as wikilinks (e.g. \"home\", \"index\", \"todo\"). Add any generic filenames from your workspace that produce false positives.\nwikilinks.suffixes\tlist\t[]\tFilename suffixes whose base stem should also register as a match key. For example, if you name your hub/MOC notes docker-hub.md, add \"-hub\" here so that \"docker\" in prose matches docker-hub.md.\nwikilinks.min_length\tint\t3\tMinimum key length to consider for wikilink matching\ntags.editorial_stopwords\tlist\t[]\tDomain-specific words to exclude from tag suggestions (in addition to standard English stopwords).\nFoam root priority order (highest to lowest)\n--foam-root CLI argument\nFOAM_WORKSPACE environment variable\nfoam_root in config.json\nAuto-detect by finding .foam or .vscode directory\nCurrent working directory\n\nSee references/configuration.md for complete documentation.\n\nScripts\n\nAll scripts support --foam-root to override the workspace path.\n\ninit_templates.py\n\nInitialize .foam/templates/ with starter templates from the official Foam template:\n\npython3 scripts/init_templates.py              # Copy to current workspace\npython3 scripts/init_templates.py --foam-root ~/notes\npython3 scripts/init_templates.py --list      # Show available templates\npython3 scripts/init_templates.py --force     # Overwrite existing\npython3 scripts/init_templates.py --dry-run   # Preview what would be copied\n\n\nTemplates included:\n\nnew-note.md — Default template for new notes\ndaily-note.md — Template for daily notes\nyour-first-template.md — Example template demonstrating VS Code snippets\ncreate_note.py\n\nCreate a new note from template:\n\npython3 scripts/create_note.py \"My New Idea\"\npython3 scripts/create_note.py \"Meeting Notes\" --template meeting\npython3 scripts/create_note.py \"Research Topic\" --dir research/\n\nfind_backlinks.py\n\nFind all notes that link to a given note:\n\npython3 scripts/find_backlinks.py \"Machine Learning\"\npython3 scripts/find_backlinks.py \"ml-basics\" --format json\n\nsearch_tags.py\n\nFind notes by tag:\n\npython3 scripts/search_tags.py \"#research\"\npython3 scripts/search_tags.py machine-learning --include-frontmatter\n\nlist_tags.py\n\nList all tags with usage counts:\n\npython3 scripts/list_tags.py\npython3 scripts/list_tags.py --hierarchy --min-count 3\n\ngraph_summary.py\n\nAnalyze the knowledge graph:\n\npython3 scripts/graph_summary.py\npython3 scripts/graph_summary.py --format json\n\ndaily_note.py\n\nCreate daily notes:\n\npython3 scripts/daily_note.py\npython3 scripts/daily_note.py --yesterday\npython3 scripts/daily_note.py --template custom-daily\npython3 scripts/daily_note.py --print-path   # Just output the path\n\nsuggest_wikilinks.py\n\nSuggest wikilinks by finding text in a note that matches existing note titles:\n\npython3 scripts/suggest_wikilinks.py my-note.md              # Interactive mode\npython3 scripts/suggest_wikilinks.py my-note.md --apply 1,3,5  # Auto-apply\npython3 scripts/suggest_wikilinks.py my-note.md --auto-apply   # Apply all\npython3 scripts/suggest_wikilinks.py my-note.md --dry-run      # Preview only\npython3 scripts/suggest_wikilinks.py my-note.md --with-aliases # Create [[target|text]] format\n\n\nThe script scans the note content and identifies words/phrases that match existing note titles in the archive. It presents them as a numbered list:\n\n1. Line 12, col 8\n   Text: \"machine learning\"\n   Link to: [[machine-learning]]\n   Context: ...working on machine learning projects...\n\n\nWikilink formats:\n\nDefault: [[target]] — clean, simple links\nWith --with-aliases: [[target|display text]] — preserves original text as alias\n\nRespond with:\n\nNumbers to implement (e.g., 1 3 5)\nall to apply all suggestions\nnone to cancel\nsuggest_tags.py\n\nSuggest tags for a note based on content and existing tags in the archive:\n\npython3 scripts/suggest_tags.py my-note.md              # Interactive mode\npython3 scripts/suggest_tags.py my-note.md --apply all  # Add all suggested\npython3 scripts/suggest_tags.py my-note.md --apply existing  # Only existing tags\npython3 scripts/suggest_tags.py my-note.md --frontmatter     # Add to frontmatter\n\n\nThe script:\n\nExtracts keywords from note content\nFinds matching existing tags (with usage counts)\nSuggests new tags based on content analysis\n\nPresented as numbered list with two sections:\n\nExisting Tags — Already used in your archive\nNew Suggestions — Extracted from current note content\n\nRespond with:\n\nNumbers (e.g., 1 3 5)\nall — all suggestions\nexisting — only existing tags\nnew — only new suggestions\nnone — cancel\nOr type custom tags: #mytag #project\ndelete_note.py\n\nDelete notes with optional backup and automatic backlink handling:\n\npython3 scripts/delete_note.py \"Old Note\"                    # Interactive deletion\npython3 scripts/delete_note.py \"Old Note\" --force          # Skip confirmation\npython3 scripts/delete_note.py \"Old Note\" --backup         # Move to .foam/trash/\npython3 scripts/delete_note.py \"Old Note\" --fix-links      # Remove wikilinks from other notes\n\n\nFeatures:\n\nBackup mode: Moves note to .foam/trash/ instead of permanent deletion\nBacklink detection: Shows which notes link to the one being deleted\nLink fixing: Automatically removes wikilinks from other notes\nConfirmation: Prompts before deletion (skip with --force)\nrename_note.py\n\nRename notes and automatically update all wikilinks:\n\npython3 scripts/rename_note.py \"Old Name\" \"New Name\"       # Interactive rename\npython3 scripts/rename_note.py \"Old Name\" \"New Name\" --force  # Skip confirmation\n\n\nFeatures:\n\nAutomatic wikilink updates: Finds and updates all [[old-name]] references\nFile rename: Changes filename from old-name.md to new-name.md\nTitle preservation: Keeps note content intact, only updates links\nConfirmation: Shows affected notes before proceeding\nWhen to Use This Skill\n\nUse this skill when:\n\nCreating or editing notes in a Foam workspace\nWorking with wikilinks, backlinks, or the knowledge graph\nAnalyzing note relationships and connections\nSetting up or configuring Foam templates\nWorking with daily notes or tags\nPublishing Foam workspaces to static sites\nFoam Workspace Structure\nfoam-workspace/\n├── .vscode/\n│   ├── extensions.json      # Recommended extensions\n│   └── settings.json        # VS Code settings\n├── .foam/\n│   └── templates/           # Note templates (.md and .js)\n├── journals/                # Daily notes (default location)\n├── attachments/             # Images and files\n├── *.md                     # Your notes\n└── foam.json (optional)     # Foam configuration\n\nCore Concepts\nWikilinks\n\nCreate connections between notes using double brackets:\n\nSee also [[related-concept]] for more information.\n\nAutocomplete with [[ + type note name\nNavigate with Ctrl+Click (or Cmd+Click on Mac)\nCreate new notes by clicking non-existent links\nLink to sections: [[note-name#Section Title]]\n\nSee references/wikilinks.md for complete documentation.\n\nBacklinks\n\nBacklinks show which notes reference the current note — discovered automatically by Foam.\n\nAccess via:\n\nCommand palette: \"Explorer: Focus on Connections\"\nShows forward links, backlinks, or both\n\nUse backlinks for:\n\nFinding unexpected connections between ideas\nIdentifying hub concepts (notes with many backlinks)\nBuilding context around ideas across domains\n\nSee references/backlinks.md for complete documentation.\n\nTags\n\nOrganize notes beyond wikilinks:\n\n# Inline tags\n#machine-learning #research #in-progress\n\n# Frontmatter tags\n---\ntags: [machine-learning, research, in-progress]\n---\n\nHierarchical: #programming/python\nBrowse in Tag Explorer panel\nSearch: \"Foam: Search Tag\"\n\nSee references/tags.md for complete documentation.\n\nDaily Notes\n\nQuick daily journaling:\n\nShortcut: Alt+D\nCommand: \"Foam: Open Daily Note\"\nSnippets: /today, /yesterday, /tomorrow\n\nTemplate: .foam/templates/daily-note.md\n\nSee references/daily-notes.md for complete documentation.\n\nTemplates\n\nCustomize note creation. Foam looks for templates in .foam/templates/.\n\nTo initialize starter templates:\n\npython3 scripts/init_templates.py\n\n\nThis copies official Foam templates to your workspace:\n\nnew-note.md — Default template\ndaily-note.md — Daily notes template\nyour-first-template.md — Example with VS Code snippets\n\nMarkdown templates (.md):\n\n---\nfoam_template:\n  filepath: '$FOAM_CURRENT_DIR/$FOAM_SLUG.md'\n---\n\n# $FOAM_TITLE\n\nCreated: $FOAM_DATE_YEAR-$FOAM_DATE_MONTH-$FOAM_DATE_DATE\n\n$FOAM_SELECTED_TEXT\n\n\nJavaScript templates (.js) — for smart, context-aware templates.\n\nSee references/templates.md for complete documentation.\n\nCommon Tasks\nCreating a New Note\n\nWhen creating notes programmatically (not via VS Code), always read the workspace template in .foam/templates/new-note.md first and follow its structure exactly.\n\nIn VS Code:\n\nUse \"Foam: Create New Note\" for default template\nUse \"Foam: Create New Note From Template\" to choose template\nOr click a non-existent wikilink [[new-note]]\nFinding Note Relationships\nBacklinks: Check Connections panel for linked notes\nGraph View: Command \"Foam: Show Graph\" for visual network\nTag Explorer: Browse notes by tag\nWorking with Embeds\n\nInclude content from other notes:\n\n![[glossary]]\n\nSee the full definition above.\n\nPublishing\n\nFoam can publish to static sites:\n\nGitHub Pages (built-in template)\nNetlify\nVercel\nGitLab Pages\nCustom static site generators (Gatsby, MkDocs, etc.)\n\nSee recipes in Foam documentation for publishing options.\n\nFoam vs Obsidian\nFeature\tFoam\tObsidian\nWikilinks\t[[note]]\t[[note]]\nEmbeds\t![[note]]\t![[note]]\nPlatform\tVS Code\tDedicated app\nPlugin ecosystem\tMinimal (VS Code extensions)\tExtensive\nFile format\tStandard Markdown\tMarkdown with extensions\nConfiguration\t.vscode/settings.json\t.obsidian/ folder\nPrice\tFree\tFreemium\n\nBoth use the same core linking syntax. Foam prioritizes simplicity and standard formats.\n\nConfiguration\n\nKey .vscode/settings.json options:\n\n{\n  \"foam.openDailyNote.onStartup\": true,\n  \"foam.dateSnippets.format\": \"yyyy-mm-dd\",\n  \"markdown.styles\": [\".foam/css/custom.css\"]\n}\n\nFoam CLI Commands\n\nKey VS Code commands:\n\nFoam: Open Daily Note — Create/open today's note\nFoam: Create New Note — Create from default template\nFoam: Create New Note From Template — Choose template\nFoam: Create New Template — Create new template\nFoam: Show Graph — Visualize knowledge graph\nFoam: Search Tag — Search for tagged notes\nExplorer: Focus on Connections — Show backlinks panel\nReference Documentation\nfoam-overview.md — General Foam introduction and philosophy\nwikilinks.md — Complete wikilinks guide\nbacklinks.md — Backlinks and knowledge discovery\ntags.md — Tag organization and filtering\ndaily-notes.md — Daily note workflows\ntemplates.md — Template creation (Markdown and JavaScript)\n\nRead these files for detailed information on specific features.\n\nExternal Resources\nOfficial site: https://foamnotes.com\nGitHub: https://github.com/foambubble/foam\nDiscord: https://foambubble.github.io/join-discord/w\nTips\nStart small: Foam works best with consistent note-taking habits\nLink liberally: Create wikilinks even to non-existent notes (placeholders)\nUse the graph: Visualize your knowledge network to find gaps\nTrust the process: Backlinks reveal connections you didn't plan\nKeep it standard: Foam uses standard Markdown — your notes remain portable"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Hegghammer/foam-notes",
    "publisherUrl": "https://clawhub.ai/Hegghammer/foam-notes",
    "owner": "Hegghammer",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/foam-notes",
    "downloadUrl": "https://openagent3.xyz/downloads/foam-notes",
    "agentUrl": "https://openagent3.xyz/skills/foam-notes/agent",
    "manifestUrl": "https://openagent3.xyz/skills/foam-notes/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/foam-notes/agent.md"
  }
}