hello
Show a nice greeting message with a timestamp. Use this when the user wants to greet or say hello, optionally to a certain subject <subject> and in a certain…
Find quotes for a set of topic keywords and place them into a 2x2 matrix, spanned by the presence of an author/origin and by the literal containment of a keyword, optionally grounded in Internet/Web facts and optionally widened to the conceptual neighborhood of the topic. Use
$ npx -y skills add rse/ase --skill ase-meta-quotes --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ase-meta-quotesContext preview
The summary Claude sees to decide when to auto-load this skill.
Find quotes for a set of topic keywords and place them into a 2x2 matrix, spanned by the presence of an author/origin and by the literal containment of a keyword, optionally grounded in Internet/Web facts and optionally widened to the conceptual neighborhood of the topic. Use
name: ase-meta-quotes
argument-hint: "[--help|-h] [--ground|-g] [--proximity|-p] [--count|-c <count>] <topic-keywords>"
description: >
Find quotes for a set of topic keywords and place them into a
2x2 matrix, spanned by the presence of an author/origin and by
the literal containment of a keyword, optionally grounded in
Internet/Web facts and optionally widened to the conceptual
neighborhood of the topic. Use when the user wants "quotes",
"sayings", "aphorisms", or "citations" on a topic.
user-invocable: true
disable-model-invocation: false
effort: high
allowed-tools:
- "Agent"@${CLAUDE_SKILL_DIR}/../../meta/ase-control.md @${CLAUDE_SKILL_DIR}/../../meta/ase-skill.md @${CLAUDE_SKILL_DIR}/../../meta/ase-getopt.md
<purpose name="ase-meta-quotes"> Find Quotes on a Topic </purpose>
<expand name="getopt" arg1="ase-meta-quotes" arg2="--ground|-g --proximity|-p --count|-c=8"> $ARGUMENTS </expand>
<objective> *Find* quotes for the following topic keywords: <keywords><getopt-arguments/></keywords> </objective>
<flow>
1. <step id="STEP 1: Sanity Check Usage">
1. <if condition="<keywords/> is empty"> Only output the following <template/> and then immediately *STOP* processing the entire current skill:
<template> ⧉ **ASE**: ✪ skill: **ase-meta-quotes**, ▶ ERROR: expected a `<topic-keywords>` argument </template> </if>
2. Set <quotes></quotes> (set to empty).
3. Determine the maximum total number of *quotes* to surface: set <count/> to <getopt-option-count/>; if <getopt-option-count/> is *non-numeric* or *less than or equal to 0*, use the default *8* instead.
</step>
2. <step id="STEP 2: Harvest Quotes">
1. Determine *quotes* -- sayings, aphorisms, maxims, proverbs, and citations -- which are about the topic <keywords/>, and store them in <quotes/>. Per quote, record its *text*, its *author* (a named person or organization, if any is known), its *origin* (a named work, standard, or document, if any is known), and <keywords/> as its *source topic*.
2. <if condition="<getopt-option-ground/> is equal `true`">
*Additionally* -- and never *instead* -- gather quotes from the Internet/Web by using the `ase-meta-search` skill in a sub-agent with the following tool call:
`Agent( description: "Query Web Search Service", subagent_type: "ase:ase-meta-search", prompt: "Search the Internet/Web and gather quotes about the following topic: <keywords/>", run_in_background: false )`
Merge the returned quotes into <quotes/>, deduplicating quotes which differ only in punctuation, capitalization, or attribution wording, and remember for every quote whether the search *confirmed* its exact wording and attribution.
<if condition="the sub-agent returned no usable quotes"> Output the following <template/> and continue with the model knowledge only:
<template> <ase-tpl-bullet-secondary/> **WARNING**: grounding found no usable quotes -- falling back to model knowledge. </template> </if>
</if>
</step>
3. <step id="STEP 3: Widen Topic via Proximity" condition="<getopt-option-proximity/> is equal `true`">
1. Set <prompt><keywords/></prompt>.
2. <if condition="<getopt-option-ground/> is equal `true`"> Set <prompt>GROUND <keywords/></prompt>, so the agent grounds its determination in Internet/Web facts instead of using model knowledge only. </if>
3. Determine the *conceptual neighborhood* of <keywords/> by using the `ase-meta-proximity` agent in a sub-agent with the following tool call:
`Agent( description: "Determine Conceptual Proximity", subagent_type: "ase:ase-meta-proximity", prompt: "<prompt/>", run_in_background: false )`
4. <if condition="the sub-agent returned no usable neighborhood"> Output the following <template/>, *SKIP* the remaining sub-steps of this step, and continue with the quotes harvested in STEP 2 only:
<template> <ase-tpl-bullet-secondary/> **WARNING**: proximity agent returned no usable result -- keeping the narrow topic only. </template> </if>
5. Parse the returned labeled list and set <neighborhood/> to the values of its `PARENT:` line (the *broader* topic), of its four `SIBLING:` lines (the *same-level* topics), and of its four `CHILD:` lines (the *narrower* topics).
6. Harvest quotes for *each* topic of <neighborhood/> exactly as in STEP 2 (Harvest Quotes), record the contributing neighborhood topic as the *source topic* of each of those quotes, and merge the results into <quotes/>.
</step>
4. <step id="STEP 4: Classify and Render Quotes">
1. *Classify Quotes*:
Classify every quote of <quotes/> along two *orthogonal* axes:
A quote is `ATTRIBUTED` if a named *author* and/or a named *origin* is known for it, and `ANONYMOUS` otherwise.
A quote is `LITERAL` if its text contains at least one of the topic keywords of <keywords/> as a *whole word* -- matched *case-insensitively* and tolerating *inflections* (e.g. `architect` and `architectural` match the keyword `architecture`), but *never* as a mere *substring* (e.g. `art` does *not* match `architecture`). A quote is `THEMATIC` otherwise.
Both axes span the four *quadrants*:
-
Repo: rse/ase
Show a nice greeting message with a timestamp. Use this when the user wants to greet or say hello, optionally to a certain subject <subject> and in a certain…
Review software architecture, including package cohesion and inter-package coupling
Discover additional, third-party components (libraries/frameworks) for the technology stack to provide needed functionality.
Analyze the source code for problems in either the logic and semantics and its related control flow, performance and efficiency, or security.
Craft Source Code: Use when user wants to "create", "add", or "craft" a new feature from scratch.
Dissect the current Git change set, treated as an epic, domain-wise and logically into cohesive parts and materialize each part in its own dedicated Git…