propose agents guidelines and skills#3117
Open
mgravell wants to merge 3 commits into
Open
Conversation
…mand-map rename correctly otherwise
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Let's acknowledge that agents are going to happen.
Here we:
Example output from the
summarize-databaseskill:I'll use the
summarize-databaseskill for the local default port (127.0.0.1:6379).Skill
Starting with scope & connect (step 0) — identify the server, topology, size, and memory.
Identified: genuine Redis 8.8.0, standalone master, no replicas (
connected_slaves:0), not clustered,DBSIZE = 2241. Since there's no replica, there's nothing to offload to (I'll note that). With only 2241 keys, I'll fully enumerate viaSCANfor exact results rather than sample. Let me confirm capabilities (this is real Redis, soOBJECT ENCODING/RANDOMKEYshould work) and pull the keyset + structural probes.Same shape as the dataset I profiled before (2241 keys:
actor:{int}×1319,movie:{int}×922) — but this is real Redis 8.8.0, soOBJECT ENCODINGworks this time. Let me run the structural probes (type, encoding, memory, TTL, element count) across all keys — no values yet.Real Redis gives me encodings now: 1632
listpack(small hashes) + 609hashtable(larger). Let me cross-tab encoding by pattern to finish the structural picture, then I'll pause for consent before reading any values.Structural profile is complete. Per the skill's confidentiality rule, I'll stop here before reading any values and present the structure-only summary, then ask for your consent to proceed to content classification (which would read sample field values into context).
Redis summary —
127.0.0.1:6379(structure-only so far)Connection & scope
connected_slaves:0) — so there's nothing to offload the read load to; this ran against the master by necessity.DBSIZE= 2241 (db0), 100% enumerated viaSCAN(small enough that full coverage beat sampling — no sampling error).redis-cli(pipelined) for the bulk probe;resp-cliconfirmed the same scoping. All commands read-only.Key patterns
Two flat
prefix:{int}families:actor:{int}listpackmovie:{int}hashtable/ 313listpackactor1–1319 (dense, contiguous);movie1–1141 with only 922 present (~219 gaps — sparse).hashtable-encoded key is amovie— the larger movie hashes exceed Redis'shash-max-listpackthresholds and promote from the compactlistpacktohashtable; all actor hashes staylistpack.Where the data is — count vs. size diverge
actordominates (59%).movieholds 516,479 B (80%) vsactor126,887 B (20%), despite being fewer keys. Movie hashes average ~5.8× the bytes (560 vs 96), driving both the size skew and the encoding promotion.Consent needed to continue
The above used key names and structure only — no values read. Step 4 (content classification) would sample field values (e.g.
HRANDFIELD … WITHVALUESon a few hashes per pattern) to tell you whether fields are counters / text / JSON / URLs / etc. That pulls real data into my context.This looks like a public movie/actor catalog (low sensitivity), but the rule is to ask. Do you want me to proceed with content classification? Reply:
actorandmoviehashes and characterize the fields; orConsent noted — proceeding to content classification. These hashes are small and known-size (3 and ~7 fields), so reads are bounded. Sampling a few of each pattern:
Content is clear, and it explains the earlier encoding split. Let me confirm the movie field-count distribution to nail down the "full vs stub" record finding.
Confirmed the structure. Here's the completed profile with content classification.
Redis summary —
127.0.0.1:6379(complete)Connection & scope
Key patterns & structure
actor:{int}listpackmovie:{int}hashtable/ 313listpackactor1–1319 (dense);movie1–1141, 922 present (~219 gaps, sparse). All persistent, no TTLs. Total ≈ 628 KiB.Content (values sampled)
actor:{int}— uniform 3-field records:first_name,last_name→ textdate_of_birth→ integer year (e.g.1979; despite the name, it's a year, not a full date)actor:1→ Chris Pratt, 1979.movie:{int}— two record shapes, which is the key content finding:title,genre(text),votes(integer counter),rating(float, e.g.8.1),release_year(int),plot(long free text),poster(URL),ibmdb_id(external IMDb id, e.g.tt2015381).title,genre,votes,rating,release_year— noplot/poster/ibmdb_id.movie:1→ "Guardians of the Galaxy", Action, votes 704613, rating 8.1, 2014.Why the encoding splits the way it does
Every
hashtable-encoded key is a movie, and it lines up with content: the longplot/posterstrings push full movie hashes past Redis'shash-max-listpack-valuethreshold, promoting them tohashtable. Stub movies (no plot/poster) and all actor hashes stay compactlistpack. So the encoding distribution is essentially a proxy for "has full metadata."Caveats
MEMORY USAGEis Redis's own estimate — and engine-specific: this same dataset measured ~1.93 MiB on Garnet vs ~628 KiB here, so don't treat the byte figures as portable.Net: a movie/actor reference catalog — actors are uniform 3-field stubs; movies split ~72/28 between full metadata records (which drive 80% of memory and all the
hashtableencodings) and lightweight stubs.