If you're willing to do some alteration to the format you list sources in, you can do some filtering - if you name all class features with the level of the feature and then the name of the class in single brackets, such as 1 [fighter], and for all non-class features, have the number as 0, the rest of the source in single brackets. This will allow you to do this kind of thing: /w "@{character_name}"&{template:default} {{name=Level ?{level} feature(s) [ ](#" hidden null=)}} {{[0](#" hidden)= [ ](#" hidden null=)}} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$0_source_type}}=?{level}*1]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$0_source_type}** [**@{prefix}@{character_name}|repeating_traits_$0_name}**](`%{@{character_name}|repeating_traits_$0_output}) *@{prefix}@{character_name}|repeating_traits_$0_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$1_source_type}}=?{level}*2]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$1_source_type}** [**@{prefix}@{character_name}|repeating_traits_$1_name}**](`%{@{character_name}|repeating_traits_$1_output})description} *@{prefix}@{character_name}|repeating_traits_$1_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$2_source_type}}=?{level}*3]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$2_source_type}** [**@{prefix}@{character_name}|repeating_traits_$2_name}**](`%{@{character_name}|repeating_traits_$2_output}) *@{prefix}@{character_name}|repeating_traits_$2_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$3_source_type}}=?{level}*4]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$3_source_type}** [**@{prefix}@{character_name}|repeating_traits_$3_name}**](`%{@{character_name}|repeating_traits_$3_output}) *@{prefix}@{character_name}|repeating_traits_$3_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$4_source_type}}=?{level}*5]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$4_source_type}** [**@{prefix}@{character_name}|repeating_traits_$4_name}**](`%{@{character_name}|repeating_traits_$4_output}) *@{prefix}@{character_name}|repeating_traits_$4_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$5_source_type}}=?{level}*6]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$5_source_type}** [**@{prefix}@{character_name}|repeating_traits_$5_name}**](`%{@{character_name}|repeating_traits_$5_output}) *@{prefix}@{character_name}|repeating_traits_$5_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$6_source_type}}=?{level}*7]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$6_source_type}** [**@{prefix}@{character_name}|repeating_traits_$6_name}**](`%{@{character_name}|repeating_traits_$6_output}) *@{prefix}@{character_name}|repeating_traits_$6_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$7_source_type}}=?{level}*8]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$7_source_type}** [**@{prefix}@{character_name}|repeating_traits_$7_name}**](`%{@{character_name}|repeating_traits_$7_output}) *@{prefix}@{character_name}|repeating_traits_$7_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$8_source_type}}=?{level}*9]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$8_source_type}** [**@{prefix}@{character_name}|repeating_traits_$8_name}**](`%{@{character_name}|repeating_traits_$8_output}) *@{prefix}@{character_name}|repeating_traits_$8_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$9_source_type}}=?{level}*10]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$9_source_type}** [**@{prefix}@{character_name}|repeating_traits_$9_name}**](`%{@{character_name}|repeating_traits_$9_output}) *@{prefix}@{character_name}|repeating_traits_$9_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$10_source_type}}=?{level}*11]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$10_source_type}** [**@{prefix}@{character_name}|repeating_traits_$10_name}**](`%{@{character_name}|repeating_traits_$10_output}) *@{prefix}@{character_name}|repeating_traits_$10_description}* }} {{[[[{0,0@{prefix}@{character_name}|repeating_traits_$11_source_type}}=?{level}*12]]](#" hidden)=**@{prefix}@{character_name}|repeating_traits_$11_source_type}** [**@{prefix}@{character_name}|repeating_traits_$11_name}**](`%{@{character_name}|repeating_traits_$11_output}) *@{prefix}@{character_name}|repeating_traits_$11_description}* }} {{[0](#" hidden)=[ ](#" hidden null=)}}&{noerror} You'll need to create an attribute named "prefix" (without quotation marks), consisting of "@{" (again, no quatations). I repeated the lines for 12 features, if you need more, just add more lines (before the last line), incrementing the numbers as you go.