arcgis-feature-effects
Skill0 starsChanged 7 months agoMITView on GitHub
Apply visual effects, filters, focus areas, and blend modes to map layers. Use for highlighting features, spatial filtering, display filters, and CSS-like visual emphasis.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- geoai-latam/SKILL_JS5_ARCGIStheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- geoai-latam/SKILL_JS5_ARCGIS★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skills/arcgis-ai-components/AGENTS.mdAGENTS.md
- skills/arcgis-authentication/AGENTS.mdAGENTS.md
- skills/arcgis-charts/AGENTS.mdAGENTS.md
- skills/arcgis-coding-components/AGENTS.mdAGENTS.md
- skills/arcgis-core-maps/AGENTS.mdAGENTS.md
- skills/arcgis-editing/AGENTS.mdAGENTS.md
- skills/arcgis-embeddable-maps/AGENTS.mdAGENTS.md
- skills/arcgis-interaction/AGENTS.mdAGENTS.md
- skills/arcgis-layers/AGENTS.mdAGENTS.md
- skills/arcgis-starter-app/AGENTS.mdAGENTS.md
- skills/arcgis-visualization/AGENTS.mdAGENTS.md
- skills/arcgis-widgets-ui/AGENTS.mdAGENTS.md
- arcgis-3d-layersSkill
- arcgis-advanced-layersSkill
- arcgis-ai-componentsSkill
- arcgis-arcadeSkill
- arcgis-authenticationSkill
- arcgis-chartsSkill
- arcgis-cim-symbolsSkill
- arcgis-coding-componentsSkill
- arcgis-coordinates-projectionSkill
- arcgis-core-mapsSkill
- arcgis-core-utilitiesSkill
- arcgis-custom-renderingSkill
- arcgis-editingSkill
- arcgis-embeddable-mapsSkill
- arcgis-geometry-operationsSkill
- arcgis-imagerySkill
- arcgis-interactionSkill
- arcgis-knowledge-graphsSkill
- arcgis-layersSkill
- arcgis-map-toolsSkill
- arcgis-performanceSkill
- arcgis-popup-templatesSkill
- arcgis-portal-contentSkill
- arcgis-rest-servicesSkill
- arcgis-scene-environmentSkill
- arcgis-smart-mappingSkill
- arcgis-spatial-analysisSkill
- arcgis-starter-appSkill
- arcgis-tables-formsSkill
- arcgis-time-animationSkill
- arcgis-utility-networksSkill
- arcgis-visualizationSkill
- arcgis-widgets-advancedSkill
- arcgis-widgets-uiSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill for applying visual effects, feature filters, display filters, focus areas, and blend modes to layers.
- Distinctive: line 507
Effect order: When combining effects, they are applied in the order listed in the string.
- Very specific: line 509
Display filter vs feature effect: Use displayFilterInfo to hide features entirely (better performance).
- Very specific: line 527
Focus areas require Polygon geometry: Only Polygon geometry is supported for FocusArea.geometries.
- Distinctive: line 529
Scale-dependent effects: When using the array format for scale-dependent effects, provide at least two stops for smooth interpolation …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ArcGIS Feature Effects
Use this skill for applying visual effects, feature filters, display filters, focus areas, and blend modes to layers.
Import Patterns
Direct ESM Imports
import FeatureEffect from "@arcgis/core/layers/support/FeatureEffect.js";
import FeatureFilter from "@arcgis/core/layers/support/FeatureFilter.js";
import FocusArea from "@arcgis/core/effects/FocusArea.js";
import FocusAreas from "@arcgis/core/effects/FocusAreas.js";
import FocusAreaOutline from "@arcgis/core/effects/FocusAreaOutline.js";CDN Dynamic Imports
const [FeatureEffect, FeatureFilter, FocusArea] = await $arcgis.import([
"@arcgis/core/layers/support/FeatureEffect.js",
"@arcgis/core/layers/support/FeatureFilter.js",
"@arcgis/core/effects/FocusArea.js",
]);Note: Examples below use autocasting. For CDN usage, replace
import X from "path"withconst X = await $arcgis.import("path").
Feature Effect Basics
Feature effects divide features into two sets (included/excluded) based on a filter, then apply CSS-like effects to each set.
Basic Feature Effect
layer.featureEffect = {
filter: {
where: "population > 100000",
},
includedEffect: "bloom(1.5, 0.5px, 0.2)",
excludedEffect: "grayscale(100%) opacity(30%)",
};Feature Effect on LayerView
const layerView = await view.whenLayerView(layer);
layerView.featureEffect = {
filter: {
where: "status = 'Active'",
},
excludedEffect: "grayscale(100%) opacity(50%)",
};Scale-Dependent Effects
layerView.featureEffect = {
filter: {
where: "party_switch = 'R' OR party_switch = 'D'",
},
includedEffect: [
{ scale: 36978595, value: "drop-shadow(3px, 3px, 4px)" },
{ scale: 18489297, value: "drop-shadow(2px, 2px, 3px)" },
{ scale: 4622324, value: "drop-shadow(1px, 1px, 2px)" },
],
};Effect Types Reference
| Effect | Syntax | Description |
| opacity | opacity(50%) | Transparency (0-100%) |
| grayscale | grayscale(100%) | Remove color (0-100%) |
| blur | blur(5px) | Gaussian blur |
| drop-shadow | drop-shadow(x, y, blur, color) | Shadow effect |
| bloom | bloom(strength, radius, threshold) | Glow effect |
| brightness | brightness(150%) | Adjust brightness |
| contrast | contrast(120%) | Adjust contrast |
| invert | invert(100%) | Invert colors |
| sepia | sepia(100%) | Sepia tone |
| saturate | saturate(200%) | Color saturation |
| hue-rotate | hue-rotate(180deg) | Rotate hue |
Individual Effect Examples
Opacity
layer.featureEffect = {
filter: { where: "type = 'primary'" },
excludedEffect: "opacity(25%)",
};Grayscale
layer.featureEffect = {
filter: { where: "category = 'important'" },
excludedEffect: "grayscale(100%)",
};Blur
layer.featureEffect = {
filter: { where: "highlighted = 1" },
excludedEffect: "blur(5px)",
};Drop Shadow
layer.featureEffect = {
filter: { where: "selected = 1" },
includedEffect: "drop-shadow(3px, 3px, 4px, #000000)",
};Bloom (Glow)
layer.featureEffect = {
filter: { where: "active = 1" },
includedEffect: "bloom(1.5, 0.5px, 0.2)",
};Brightness and Contrast
layer.featureEffect = {
filter: { where: "status = 'highlight'" },
includedEffect: "brightness(150%) contrast(120%)",
excludedEffect: "brightness(50%)",
};Combining Multiple Effects
layer.featureEffect = {
filter: { where: "status = 'active'" },
includedEffect: "drop-shadow(2px, 2px, 3px) brightness(120%)",
excludedEffect: "grayscale(100%) opacity(30%) blur(2px)",
};Filter Types
Attribute Filter
layer.featureEffect = {
filter: {
where: "population > 50000 AND state = 'CA'",
},
excludedEffect: "grayscale(100%) opacity(30%)",
};Geometry-Based Filter
const layerView = await view.whenLayerView(layer);
layerView.featureEffect = {
filter: {
geometry: polygon,
spatialRelationship: "intersects",
},
excludedEffect: "grayscale(100%) opacity(30%)",
};Distance-Based Filter
layerView.featureEffect = {
filter: {
geometry: point,
spatialRelationship: "intersects",
distance: 1000,
units: "meters",
},
excludedEffect: "opacity(20%)",
};ObjectID Filter
layerView.featureEffect = {
filter: {
objectIds: [1, 5, 10, 42],
},
includedEffect: "drop-shadow(3px, 3px, 4px)",
excludedEffect: "grayscale(100%) opacity(40%)",
};Time-Based Filter
layer.featureEffect = {
filter: {
timeExtent: {
start: new Date("2020-01-01"),
end: new Date("2020-12-31"),
},
},
excludedEffect: "opacity(20%)",
};Spatial Relationships
| Relationship | Description |
intersects | Features that intersect the geometry |
contains | Features that contain the geometry |
within | Features within the geometry |
crosses | Features that cross the geometry |
overlaps | Features that overlap the geometry |
touches | Features that touch the geometry |
disjoint | Features not intersecting the geometry |
envelope-intersects | Envelope intersection (faster) |
Focus Areas (3D SceneView)
Focus areas highlight specific polygon regions in a 3D SceneView, dimming everything outside. Useful for drawing attention to areas of interest in 3D scenes.
Creating a Focus Area
import FocusArea from "@arcgis/core/effects/FocusArea.js";
import Collection from "@arcgis/core/core/Collection.js";
const focusArea = new FocusArea({
title: "Area of Interest",
id: "focus-1",
enabled: true,
outline: { color: [255, 128, 128, 0.55] },
geometries: new Collection([polygon]),
});Adding to a SceneView
// Add focus area to the view
view.focusAreas.areas.add(focusArea);
// Set visual style: "bright" or "dark"
view.focusAreas.style = "bright";Toggling Focus Areas
// Disable without removing
focusArea.enabled = false;
// Re-enable with different style
focusArea.enabled = true;
view.focusAreas.style = "dark";
// Remove entirely
view.focusAreas.areas.remove(focusArea);FocusArea Properties
| Property | Type | Description |
title | string | Title of the focus area |
id | string | Unique identifier (auto-generated if omitted) |
enabled | boolean | Whether displayed (default: true) |
geometries | Collection<Polygon> | Polygon geometries defining the focus |
outline | FocusAreaOutline | Outline style: { color } |
Layer Effects (Non-Feature)
Apply CSS-like effects to an entire layer (not per-feature).
// Apply effect to the whole layer
layer.effect = "bloom(1.5, 0.5px, 0.2)";
// Multiple effects
layer.effect = "drop-shadow(3px, 3px, 4px) brightness(120%)";
// Remove effect
layer.effect = null;Blend Modes
Blend modes control how a layer blends with layers beneath it.
layer.blendMode = "multiply"; // Default is "normal"Blend Mode Categories
| Category | Modes |
| Darkening | multiply, darken, color-burn |
| Lightening | screen, lighten, color-dodge |
| Contrast | overlay, soft-light, hard-light |
| Component | hue, saturation, luminosity, color |
| Composite | destination-in, destination-out, destination-over, source-in |
| Inversion | difference, exclusion, minus |
| Other | normal, average, vivid-light, reflect |
Common Blend Mode Patterns
// Darken: show dark features on light basemap
layer.blendMode = "multiply";
// Lighten: show light features on dark basemap
layer.blendMode = "screen";
// Masking: clip layers using another layer shape
maskLayer.blendMode = "destination-in";Display Filters
Display filters completely hide features (better performance than effects since features are not rendered).
Simple Display Filter
layer.displayFilterInfo = {
where: "population > 10000",
};Scale-Dependent Display Filter
const layer = new FeatureLayer({
url: "https://services.arcgis.com/.../FeatureServer/0",
displayFilterInfo: {
mode: "scale",
filters: [
{
title: "Major rivers",
minScale: 0,
maxScale: 36_978_595,
where: "streamOrder >= 8",
},
{
title: "Large rivers",
minScale: 36_978_595,
maxScale: 18_489_297,
where: "streamOrder >= 7",
},
{
title: "All rivers",
minScale: 4_622_324,
maxScale: 0,
},
],
},
});Checking Active Display Filter
const layerView = await view.whenLayerView(layer);
const activeFilter = layerView.effectiveDisplayFilter?.title;Combining Display Filter with Feature Effect
// Display filter hides deleted features entirely (performance)
layer.displayFilterInfo = {
where: "status != 'deleted'",
};
// Feature effect styles remaining features
layer.featureEffect = {
filter: { where: "status = 'active'" },
excludedEffect: "opacity(50%)",
};Interactive Feature Effects
Effect on Click
view.on("click", async (event) => {
const response = await view.hitTest(event);
const graphic = response.results[0]?.graphic;
if (graphic) {
const oid = graphic.attributes.OBJECTID;
layerView.featureEffect = {
filter: {
objectIds: [oid],
},
includedEffect: "drop-shadow(3px, 3px, 4px)",
excludedEffect: "grayscale(100%) opacity(40%)",
};
}
});Effect with Slider
slider.on("thumb-drag", (event) => {
const value = event.value;
layer.featureEffect = {
filter: { where: `value > ${value}` },
excludedEffect: `opacity(${100 - value}%)`,
};
});Clear Feature Effect
layer.featureEffect = null;
// or
layerView.featureEffect = null;Effect with Histogram
import histogram from "@arcgis/core/smartMapping/statistics/histogram.js";
const histogramResult = await histogram({
layer: layer,
field: "population",
numBins: 30,
});
const slider = new HistogramRangeSlider({
bins: histogramResult.bins,
min: histogramResult.minValue,
max: histogramResult.maxValue,
values: [histogramResult.minValue, histogramResult.maxValue],
});
slider.on("thumb-drag", () => {
const [min, max] = slider.values;
layerView.featureEffect = {
filter: {
where: `population >= ${min} AND population <= ${max}`,
},
excludedEffect: "grayscale(100%) opacity(30%)",
};
});Reference Samples
featureeffect-geometry- Geometry-based feature effects with spatial relationshipsfeatureeffect-drop-shadow- Scale-dependent drop shadow effectsfeatureeffect-layers-histogram- Feature effects with histogram widgetfeatureeffect-multiple-effects- Combining multiple visual effectseffect-blur-shadow- Blur and shadow effects on layersintro-effect-layer- Introduction to layer effectsdisplay-filter- Scale-dependent display filteringfocus-area- Focus areas in 3D SceneViewhighlight-features-by-geometry- Highlight features using geometryblendmode-darkening- Blend mode darkening effectsblendmode-grouplayer- Blend modes on group layersblendmode-multiple-layers- Blend modes across multiple layers
Common Pitfalls
Layer vs LayerView: Feature effects on
layeraffect all views; onlayerViewonly that specific view.// Affects all views layer.featureEffect = { ... }; // Affects only this view const layerView = await view.whenLayerView(layer); layerView.featureEffect = { ... };- Performance: Complex effects (blur, bloom) on many features impact rendering performance. Use display filters to reduce the feature count first.
- Effect order: When combining effects, they are applied in the order listed in the string.
- Display filter vs feature effect: Use
displayFilterInfoto hide features entirely (better performance). UsefeatureEffectto style included/excluded sets differently. - Time extent filter: Time-based filters require the layer to have time info configured. Without it, the filter is silently ignored.
- Spatial filter on LayerView only: Geometry-based filters (
geometry,distance) only work onlayerView.featureEffect, notlayer.featureEffect. - Bloom parameters:
bloom(strength, radius, threshold)- threshold (0-1) controls which brightness level starts glowing. Higher values = less glow. Effect string syntax: Effects are space-separated, not comma-separated. Incorrect syntax fails silently.
// Anti-pattern: comma-separated effects excludedEffect: "grayscale(100%), opacity(30%)"; // Correct: space-separated effects excludedEffect: "grayscale(100%) opacity(30%)";- Focus areas require Polygon geometry: Only
Polygongeometry is supported forFocusArea.geometries. Points and polylines are not supported. - Scale-dependent effects: When using the array format for scale-dependent effects, provide at least two stops for smooth interpolation between scales.
Related Skills
arcgis-visualization- Renderers and symbolsarcgis-smart-mapping- Auto-generated renderers with histogramarcgis-interaction- User interaction and hit testingarcgis-layers- Layer types and configurationarcgis-core-maps- Map and view setup
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

