Tailwindcss Development
anonaddy/anonaddy
Always invoke when the user's message includes 'tailwind' in any form.
Gives a route in Chamilo's Vue app its breadcrumb entirely from router meta fields, without editing the Breadcrumb component or naming pages.
$ npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install chamilo/chamilo-lms vue-breadcrumb --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/chamilo/chamilo-lms.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/vue-breadcrumb .claude/skills/vue-breadcrumb && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "vue-breadcrumb" agent skill from https://github.com/chamilo/chamilo-lms/tree/master/.claude/skills/vue-breadcrumb into .claude/skills/vue-breadcrumb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-breadcrumb", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/chamilo/chamilo-lms/tree/master/.claude/skills/vue-breadcrumbType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install chamilo/chamilo-lms vue-breadcrumb --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chamilo/chamilo-lms.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/vue-breadcrumb .agents/skills/vue-breadcrumb && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "vue-breadcrumb" agent skill from https://github.com/chamilo/chamilo-lms/tree/master/.claude/skills/vue-breadcrumb into .agents/skills/vue-breadcrumb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-breadcrumb", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install chamilo/chamilo-lms vue-breadcrumb --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chamilo/chamilo-lms.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/vue-breadcrumb .cursor/skills/vue-breadcrumb && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "vue-breadcrumb" agent skill from https://github.com/chamilo/chamilo-lms/tree/master/.claude/skills/vue-breadcrumb into .cursor/skills/vue-breadcrumb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-breadcrumb", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/chamilo/chamilo-lms.git --path .claude/skills/vue-breadcrumb--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install chamilo/chamilo-lms vue-breadcrumb --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chamilo/chamilo-lms.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/vue-breadcrumb .gemini/skills/vue-breadcrumb && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "vue-breadcrumb" agent skill from https://github.com/chamilo/chamilo-lms/tree/master/.claude/skills/vue-breadcrumb into .gemini/skills/vue-breadcrumb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-breadcrumb", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install chamilo/chamilo-lms vue-breadcrumbInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/chamilo/chamilo-lms.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/vue-breadcrumb .github/skills/vue-breadcrumb && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "vue-breadcrumb" agent skill from https://github.com/chamilo/chamilo-lms/tree/master/.claude/skills/vue-breadcrumb into .github/skills/vue-breadcrumb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-breadcrumb", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install chamilo/chamilo-lms vue-breadcrumb --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chamilo/chamilo-lms.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/vue-breadcrumb .opencode/skills/vue-breadcrumb && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "vue-breadcrumb" agent skill from https://github.com/chamilo/chamilo-lms/tree/master/.claude/skills/vue-breadcrumb into .opencode/skills/vue-breadcrumb/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vue-breadcrumb", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
vue-breadcrumbGives a route in Chamilo's Vue app its breadcrumb entirely from router meta fields, without editing the Breadcrumb component or naming pages.
The breadcrumb component in this project knows no page by name; it reads four `meta` declarations in the router: `showBreadcrumb`, `breadcrumb`, `breadcrumbParents` and `breadcrumbResource`. The skill forbids editing `Breadcrumb.vue` to give a page its trail. Step one is setting `showBreadcrumb: true` on the parent route, or a function of the route when the trail only sometimes applies. Step two is setting `meta.breadcrumb` on the parent and every leaf.
The breadcrumb value is a translation key, not text. An empty string omits that crumb, which suits list pages whose tool crumb already names them, while a missing property triggers a development console warning and shows the raw route name. The label can be a function returning a key, and may return an empty string only on routes that declare `breadcrumbParents`. Step three registers any new key by hand in the en_US locale JSON and the two translation files, since the update command only propagates existing keys, and mass regeneration of locale files should not be committed. The legacy PHP breadcrumb is out of scope.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c3b9c05. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
yarnpython3npxphpFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use yarn and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Vue Route Breadcrumbs loads about 2k tokens when it runs. Until then it costs about 211 tokens; SKILL.md has 813 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from chamilo/chamilo-lms at commit c3b9c05, republished under its GPL-3.0 licence (© chamilo). 813 words, ~2,020 tokens.
.claude/skills/vue-breadcrumb/SKILL.md (or your agent's skills folder).Never edit assets/vue/components/Breadcrumb.vue to give a page its trail. The component
holds no page name and no path. Everything a trail needs is declared in the route.
Set showBreadcrumb: true in the meta of the parent route. Without it, App.vue does not mount
the component and nothing you declare below has any effect.
A route that only sometimes has a trail declares a function instead. It receives the route:
// The personal agenda hangs from no course, so it has nothing to show.
showBreadcrumb: (route) => Number(route.query?.cid || 0) > 0,Set meta.breadcrumb on the parent and on every leaf. The value is a translation key,
never translated text.
export default {
path: "/resources/checklist/:node/",
meta: {
requiresAuth: true,
showBreadcrumb: true,
tool: "checklist",
breadcrumb: "Checklists",
},
name: "checklist",
component: () => import("../components/layout/SimpleRouterViewLayout.vue"),
redirect: { name: "ChecklistList" },
children: [
{ name: "ChecklistList", path: "", meta: { breadcrumb: "" }, component: ... },
{ name: "ChecklistCreate", path: "create", meta: { breadcrumb: "Create" }, component: ... },
{ name: "ChecklistUpdate", path: "edit/:id", meta: { breadcrumb: "Edit" }, component: ... },
],
}breadcrumb: "" means omit this crumb, and it is what a list page usually wants: the tool
crumb already names that page. An absent property is a different thing — it triggers the
development warning and shows the raw route name.
The label can also be a function returning a key, when it depends on the request:
breadcrumb: (route) => {
const gid = Number(route.query?.gid || 0)
const cid = Number(route.query?.cid || 0)
return gid > 0 ? "Group agenda" : cid > 0 ? "Agenda" : "Personal agenda"
},A function may also return "" to omit the crumb, but only on a route that declares
breadcrumbParents: the tool and resource branches still compare the raw meta.breadcrumb
property, so there a function is never empty. Declare it when the page's own name exists for
some requests only. AdminStatistics in assets/vue/router/admin.js is the reference — its key
comes from activeReportLabelKey (assets/vue/utils/statisticsReports.js), which names the
report in route.query.report and returns "" when there is none.
A key that is new to the platform goes by hand into three files:
assets/locales/en_US.jsontranslations/messages.pottranslations/messages.en_US.pophp bin/console chamilo:update_vue_translations does not create keys. It only propagates to
the other locales the keys that en_US.json already holds. Never commit a mass regeneration of
assets/locales/*.json; a single new line is fine.
Check first whether the key exists — most tool names already do:
python3 -c "import json; d=json.load(open('assets/locales/en_US.json')); print('Checklists' in d)"breadcrumbParents — a page that hangs from a list pageGive the leaf the fixed ancestors that always precede it. Each entry is { label, route }, where
label is a translation key and route is a Vue Router location — prefer { name: ... } over a
raw path.
meta: {
breadcrumb: "Import checklists",
breadcrumbParents: [
{ label: "Administration", route: { name: "AdminIndex" } },
{ label: "Checklists", route: { name: "ChecklistAdminList" } },
],
}When several routes share the same ancestors, declare the lists once at the top of the file.
assets/vue/router/admin.js is the reference, with adminCrumb, classesCrumbs,
multiUrlCrumbs and accessUrlCrumbs; room.js and branch.js show the smaller shape.
A route with breadcrumbParents owns its whole trail and takes the first branch of
buildBreadcrumb, so nothing else runs for it.
The ancestors are fixed, but the leaf's own crumb is not: an empty key drops it and leaves the
ancestors standing. That is how a page hangs a report or filter name off a parent that links
back to its own bare URL, and it is the only branch where a function may return "".
breadcrumbResource — a tool that opens a resourceDeclare it on the parent, when the trail has to name the thing the user opened.
// One resource at a time: list -> resource -> sub-page.
breadcrumbResource: {
trail: "self",
listRoute: "AssignmentsList",
detailRoute: "AssignmentDetail",
detailParam: "id",
}
// A chain of folders, walked up the resource-node parents.
breadcrumbResource: {
trail: "ancestors",
listRoute: "DocumentsList",
detailRoute: "DocumentsList",
}This declaration also drives the fetch: loadResourceNodeIfNeeded loads the resource node only
for a route whose tool declares it. Nothing else has to be wired.
Breadcrumb.vue. If a trail seems to need one, the shape is probably
already covered by one of the four declarations. Read the component's own builders first. A
rule that names a page or a route never belongs there. Widening a contract the declarations
already document is a different thing, and rare: do it only when a builder fails to honour a
declaration the skill already describes.route.name.includes("Page") puts a
"Pages" crumb on every wiki page of every course.t() on what you declare.home slot, and the container is hidden while the rest is empty. A page whose trail
reduces to its tool shows nothing.# Fails when a route renders a breadcrumb without declaring its label.
yarn check:breadcrumb-routes
npx eslint assets/vue/router/
yarn devThen open the page and read the browser console. [Breadcrumb] Route "X" has no meta.breadcrumb
means a declaration is missing. The warning is stripped from the production bundle.
tests/playwright/features/breadcrumb.feature holds the breadcrumb scenarios. Add yours there.
Assert on CSS selectors, never on crumb text: this platform runs in many languages and the test environment is not always English.
Then I should see the ".app-breadcrumb a[href='/admin/urls']" elementAn a[href] proves both that the ancestor is there and that it points at the right place. Two
traps that cost real time:
<span>, not a link. Asserting a[href] on the current page's own
crumb never matches. Assert on an ancestor.breadcrumbResource paints late. It waits for the resource-node fetch, well
past Playwright's 15 s default. Use I wait up to 45 seconds for the element ... to appear.Playwright needs BASE_URL=http://localhost inside the container, and the generated spec under
tests/playwright/.features-gen/ is tracked, so run bddgen and commit it too.
© chamilo, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/vue-breadcrumb of chamilo/chamilo-lms.
Open the folder on GitHubat commit c3b9c05
Vue Route Breadcrumbs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Vue Route Breadcrumbs this skillchamilo/chamilo-lms | 1k | — | ~2k | Automated safety check: Pass | GPL-3.0 | |
| Tailwindcss Developmentanonaddy/anonaddy | 4.9k | 10 repos | ~865 | Automated safety check: Pass | MIT | |
| GSAP in Vue, Nuxt and Sveltegreensock/gsap-skills | 16k | 4 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Vuetify Playgroundvuetifyjs/vuetify | 41k | — | ~730 | Automated safety check: Pass | Custom licence | |
| Buefy Vue UI Componentsbuefy/buefy | 9.5k | — | ~8.2k | Automated safety check: Pass | MIT | |
| Create Docsvictorgarciaesgi/nuxt-typed-router | 413 | 2 repos | ~2.8k | Automated safety check: Pass | MIT |
anonaddy/anonaddy
Always invoke when the user's message includes 'tailwind' in any form.
greensock/gsap-skills
Shows how to use GSAP in Vue, Nuxt, Svelte and other lifecycle-based frameworks: create after mount, scope selectors to the component, and revert on unmount.
vuetifyjs/vuetify
Maintains the Vuetify repo's local Playground.vue so contributors get a realistic reproduction and a short demo they can paste into a pull request description.
buefy/buefy
Rules for writing Vue 3 templates with Buefy components on Bulma CSS: install options, prop conventions, b-field wrapping, tables, theming and dialogs.
victorgarciaesgi/nuxt-typed-router
Create complete documentation sites for projects. An agent skill from victorgarciaesgi/nuxt-typed-router.
yetone/kill-ai-slop
Find and remove AI slop — the generic, machine-default visual and copy tics of vibe-coded products — from a web project.
chamilo/chamilo-lms
Creates a Chamilo color theme with a logo from a website's branding or from a logo file's dominant colors, entirely through the Chamilo REST API.
chamilo/chamilo-lms
Adds commits for a new Chamilo release to the changelog page, classifying them into categories and skipping those already listed for that version.
chamilo/chamilo-lms
Swaps native form elements in Chamilo Vue files for Base components and checks that every Base, SectionHeader and Fieldset tag has its import.
chamilo/chamilo-lms
Turns a plain-language Chamilo feature description into a Playwright and Gherkin test suite confirmed against the live app, not just the source code.
Categories
Gives a route in Chamilo's Vue app its breadcrumb entirely from router meta fields, without editing the Breadcrumb component or naming pages. The breadcrumb component in this project knows no page by name; it reads four `meta` declarations in the router: `showBreadcrumb`, `breadcrumb`, `breadcrumbParents` and `breadcrumbResource`.vue` to give a page its trail.
Vue Route Breadcrumbs fits situations like: adding a route to the Vue router files and needing its breadcrumb trail; migrating a legacy PHP page to Vue with a matching breadcrumb; fixing a wrong or missing breadcrumb, or the console warning about a missing meta.breadcrumb.
Run `npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a claude-code`. Or copy the skill folder (.claude/skills/vue-breadcrumb in chamilo/chamilo-lms) into .claude/skills/vue-breadcrumb in your project. Claude Code loads it when a task matches its description.
Run `npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a codex`. Or copy the skill folder (.claude/skills/vue-breadcrumb in chamilo/chamilo-lms) into .agents/skills/vue-breadcrumb in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add chamilo/chamilo-lms --skill vue-breadcrumb -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vue-breadcrumb, .gemini/skills/vue-breadcrumb, .github/skills/vue-breadcrumb and .opencode/skills/vue-breadcrumb in your project.
Going by SKILL.md and its folder, Vue Route Breadcrumbs needs the command-line tools its instructions call (yarn, python3, npx and php). Our summary lists: A Chamilo checkout with the Vue router files under assets/vue/router.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Vue Route Breadcrumbs is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Vue Route Breadcrumbs: Tailwindcss Development (anonaddy/anonaddy, 4.9k stars), GSAP in Vue, Nuxt and Svelte (greensock/gsap-skills, 16k stars), Vuetify Playground (vuetifyjs/vuetify, 41k stars) and Buefy Vue UI Components (buefy/buefy, 9.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
chamilo (a GitHub organization) maintains it in chamilo/chamilo-lms, which has 1,008 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.
Source: chamilo/chamilo-lms on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.